Question

Mon application basée sur tabBarController comporte plusieurs onglets. Chacune a une classe viewController personnalisée, la seule différence étant la manière dont l'instance est initialisée. Existe-t-il un moyen de faire en sorte que le générateur d’interface envoie les paramètres d’initialisation personnalisés aux différents onglets?

Actuellement, l'initialisation dans viewWillAppear est en cours, mais pour de nombreuses raisons, il serait logique de le faire dans IB plutôt que dans le code.

Des suggestions?

merci, Kelso

Était-ce utile?

La solution

Interface Builder crée une archive d'objets qui est désarchivée lors de l'exécution du programme. Vous ne pouvez pas vraiment dire à IB d’appeler des méthodes particulières.

Si vous devez initialiser avant que viewWillAppear: soit appelé, vous pouvez le faire dans awakeFromNib , qui est garanti d'être appelé une fois tous les objets chargés et tous les points de vente ont été connectés à leurs cibles.

Si vous souhaitez effectuer l'initialisation même plus tôt, vous pouvez le faire en remplaçant initWithCoder: (voir le protocole NSCoding pour la documentation). Je ne sais pas s'il est documenté nulle part, mais c'est l'initialisation désignée pour les objets en cours de décodage à partir d'une archive.

Dans tout ce qui précède, vous ne pourrez pas recevoir de paramètres, mais dans le code, vous devriez pouvoir accéder à tout ce dont vous avez besoin avec une utilisation judicieuse de variables globales. Vous pouvez également utiliser [[UIApplication sharedApplication]] > pour accéder à votre objet délégué d'application.

Autres conseils

Je ne pense pas qu'il soit possible de modifier les méthodes appelées par le moteur d'exécution IB lorsque votre nib est chargée. Si vous décrivez ce que vous essayez d’accomplir (c’est-à-dire pourquoi la configuration dans viewDidAppear ne fonctionne pas pour vous), vous pourriez avoir une suggestion de meilleure façon de gérer votre initialisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top