2010-09-07 4 views
6

je dois mettre une logique personnalisée dans mon application iPhone afin que selon la version iOS que vous utilisez, choisissez un fichier XIB différent (à savoir l'iPhone ou l'iPad affichera différents fichiers XIB).initWithNibName est pas appelé

j'avais construit toute application iPhone dès le premier jour et son tout bon, en utilisant un tabbarcontroller et les contrôleurs de navigation standard dans chaque onglet.

Je mis en œuvre le:

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle

méthode

, pour constater qu'il ne soit pas appelé. (J'ai un point de rupture et des déclarations de journal dedans et rien ne frappe).

Est-ce que quelqu'un sait pourquoi cela pourrait être? OU Comment puis-je obtenir cette fonctionnalité?

J'ai lu quelque part que initWithNibName n'est appelée lorsque vous l'appelez, à savoir lorsque vous construisez votre hiérarchie programatically vue, cela est vrai ??

Répondre

7

Si vous n'êtes pas en train de faire quelque chose comme ça avant de l'ajouter à votre contrôleur de navigation:

SomeViewController *someViewController = [[SomeViewController alloc] initWithNibName:...]; 

alors les chances sont bonnes que vous surchargeons la mauvaise méthode. Si votre contrôleur de vue réside dans un fichier nib, disons le fichier nib de votre contrôleur de navigation, il sera désarchivé du fichier nib en tant que nouvel objet contrôleur de vue, au lieu d'être créé avec son propre fichier nib, donc la méthode ci-dessus ne sera pas appelé.

Vous devrez passer outre -awakeFromNib à la place.

+0

Ok, je vois, merci, alors comment puis-je sélectionner le XIB de cette méthode? – Mark

+0

Que voulez-vous dire en sélectionnant le xib? – BoltClock

+0

Eh bien, je veux des fichiers XIB différents en fonction de si im en cours d'exécution sur l'iPad ou l'iPhone, comment pourrais-je y parvenir? – Mark

6

Si vos contrôleurs de vue sont chargés à partir d'un fichier .xib, alors initWithCoder: sera appelé à la place. La méthode initWithNibName:bundle: est utilisée uniquement pour par programmation en créant des contrôleurs de vue.

+0

ok, alors comment puis-je sélectionner le XIB de cette méthode? – Mark