Connaà®tre le nom du xib

CéroceCéroce Membre, Modérateur
Bonjour à  tous,





Savez-vous s'il est possible pour un objet désérialisé depuis un NIB de connaà®tre le nom de ce fichier .nib ?



Par exemple, si un objet est instancié dans MainViewController.nib, je voudrais que cet objet sache qu'il se trouve dans "MainViewController.nib".





À vrai dire, je ne crois pas que ce soit possible mais je vous demande par acquis de conscience.





P.S.: Ma question est postée dans la rubrique Mac parce que c'est l'environnement pour lequel je me pose la question, mais si vous connaissez la réponse pour iOS, n'hésitez pas intervenir.
Mots clés:

Réponses

  • AliGatorAliGator Membre, Modérateur
    Je ne crois pas que ce soit possible, et à  vrai dire je ne vois pas l'intérêt...?
  • CéroceCéroce Membre, Modérateur
    ça comporte un intérêt réel dans mon cas actuel, pour réduire le travail de configuration.



    Je ne veux pas trop en dire pour l'instant, parce que ce n'est qu'un vague projet.
  • Je ne pense pas qu'il y ai quoi que ce soit de prévu mais tu peux éventuellement gérer toi même quelque chose avec l'appel de awakeFromNib non ?
  • AliGatorAliGator Membre, Modérateur
    J'y pensais (j'ai déjà  fait du method swizzling sur awakeFromNib pour faire la traduction automatique à  la volée de mes XIB pour ma part ça marche nickel, donc pourquoi pas l'utiliser pour ce genre de chose aussi) mais même dans le awakeFromNib, comment on pourrait récupérer le nom du XIB parent ?
  • Je pensais à  awakeFromNib pour savoir si on viens d'un XIB ou non, pas forcément avoir le nom du XIB.
  • 'Céroce' a écrit:


    Bonjour à  tous,





    Savez-vous s'il est possible pour un objet désérialisé depuis un NIB de connaà®tre le nom de ce fichier .nib ?



    Par exemple, si un objet est instancié dans MainViewController.nib, je voudrais que cet objet sache qu'il se trouve dans "MainViewController.nib".





    À vrai dire, je ne crois pas que ce soit possible mais je vous demande par acquis de conscience.





    P.S.: Ma question est postée dans la rubrique Mac parce que c'est l'environnement pour lequel je me pose la question, mais si vous connaissez la réponse pour iOS, n'hésitez pas intervenir.




    Hello,



    Essai avec le code suivant...



    Si tu trouves pas dans le xib, tu parses le xib suivant...



    Une piste a voir....


    <br />
    NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@&quot;MainViewController&quot;<br />
    														  owner:nil<br />
    													    options:nil];<br />
    <br />
    int k;<br />
    <br />
    for (k = 0; k &lt; [arrayOfViews count]; k++)<br />
    {<br />
       if (monObjet == [arrayOfViews objectAtIndex:k])<br />
    {<br />
        NSLog(@&quot;ok c&#39;est bon je l&#39;ai &#33;&quot;);<br />
    }<br />
    }<br />
    <br />
    <br />
    
  • 'devulder' a écrit:


    Hello,



    Essai avec le code suivant...



    Si tu trouves pas dans le xib, tu parses le xib suivant...



    Une piste a voir....


    <br />
    NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@&quot;MainViewController&quot;<br />
    														  owner:nil<br />
    														options:nil];<br />
    <br />
    int k;<br />
    <br />
    for (k = 0; k &lt; [arrayOfViews count]; k++)<br />
    {<br />
       if (monObjet == [arrayOfViews objectAtIndex:k])<br />
    {<br />
    	NSLog(@&quot;ok c&#39;est bon je l&#39;ai &#33;&quot;);<br />
    }<br />
    }<br />
    <br />
    <br />
    





    Heuu ? Bonjour les perf + si on charge une nouvelle fois le XIB je doute qu'on ai les même adresse... Il faudrait comparer les classes et encore, c'est fail si une même classe est utilisé à  plusieurs endroits.



    Perso j'étais plus en train de regarder la stack trace lors de l'init d'un objet d'un XIB, il y a peut être un truc à  faire avec du method swizzling sur les méthodes de chargement de NSBundle, en maintenant une table des adresses d'objets créé par un XIB... C'est crade, ça passe certainement pas la validation d'Apple pour le store mais ça doit pouvoir marcher.
  • CéroceCéroce Membre, Modérateur
    Merci pour vos réponses, qui semblent confirmer que ce n'est pas possible.



    Je ne veux pas partir sur des mécanismes compliqués. Disons que si une API qui m'avait échappé existait cela aurait été intéressant, mais s'il faut partir sur du method swizzling, ou ce genre de truc, j'ai plus intérêt à  définir une méthode abstraite +nibName.



    Je voulais éviter cette étape de configuration, mais si ce n'est pas possible, ce n'est pas possible, tant pis.



    Merci.
Connectez-vous ou Inscrivez-vous pour répondre.