2010-11-18 34 views
2

J'ai 3 fichiers xib connectés à la même classe pour réduire le codage en double. Cependant, il y a différentes choses que je veux faire quand le nouveau fichier nib se charge (c'est-à-dire dans la méthode ViewDidLoad). J'ai pensé à faire une instruction if pour comparer le nom du xib actuellement affiché à une chaîne. J'ai essayé de comprendre comment faire cela pendant la majeure partie de la journée mais je n'ai pas eu de chance. Voici un code pseudo si ce confus vous:Obtenir le nom de l'iPhone xib en cours de visualisation

if (currentXibInDisplay == @"XibFileName1") 
    // Do This... 
else if (currentXibInDisplay == @"XibFileName2") 
    // Do This... 

Il y a une façon de le faire, non? Cela semble assez simple mais je suis assez perplexe en ce moment. Merci pour toute information que vous pouvez fournir.

Répondre

3

Vous pouvez utiliser le nibname

si vous dites: vous pouvez NSString *name = self.view.nibname proove avec

`[name isEqual:@"XIBName"]` 
+0

Les vues sont-elles dans une vue unique ou sont-elles sperées? –

+0

Parce que si ces sous-vues sont dans une vue unique, .. vous pouvez dire 'self.view.viewControllers << - NSArray' –

+3

Merci beaucoup fuzi. J'ai essayé votre code using self.view.nibname mais il n'a pas trouvé le nom de nib sous la vue. Je l'ai essayé using self.nibname et cela a fonctionné. C'est exactement ce dont j'avais besoin. Merci à tous pour votre contribution. – Brian

0

Le contrôleur de vue que vous chargez possède la méthode initWithNibNamed:, vous pouvez y substituer et stocker le XIB qui va être chargé.

+0

Le problème de cette approche est que le nom de plume paramater peut être nul. – tia

+0

Je ne suis pas sûr de vous avoir bien compris. Je n'ai pas de problème avec le fait de charger le nouveau XIB dans la vue. Le fait est que si une vue particulière est chargée, je veux que d'autres choses soient faites dans la méthode ViewDidLoad. Mais je ne sais pas comment détecter si ce xib est chargé. Si je vous ai mal compris, je m'excuse. C'est mon premier vrai projet pour iOS. Si vous pouviez me montrer un exemple ou quelque chose, je l'apprécierais énormément. – Brian

+0

J'ai essayé de faire quelque chose dans le style de if ([self.nibName comparer: @ "CompareisonString"]) ... mais cela n'a pas aidé. C'est toujours "vrai", peu importe ce qui est dans la chaîne de comparaison. – Brian

5

J'ai essayé de l'utiliser avec

self.view.nibName; 

Mais cela ne fonctionnera pas, Essayez plutôt cela

self.nibName; 
0

viewController ont sous-classes une propriété de chaîne nibName vous pouvez vérifier contre:

[self.nibName isEqualTo:@"XIBFileName"]