Question

Sample: J'ai créé un ensemble minimal de fichiers qui mettent en lumière la question ici: http://uploads.omega .org.uk / Foo3.zip

Si viewDidLoad / viewInitWithNibName sont appelés, une boîte de message est affiché. La boîte de message n'apparaît pas, par conséquent, les méthodes ne sont pas appelés.

Détails: J'ai une application qui tente d'utiliser un UITabBarController pour basculer entre plusieurs vues.

Les points de vue sont reliés au constructeur d'interface à l'aide UITabBarController (sélectionnez la page de l'onglet Attributs ouverts (Option 1), et remplissez le champ Nom de NIB), et ainsi sont affichés « automatiquement » sans supplément code-behind pour les faire apparaître.

Est-il prévu que le comportement des vues chargé comme celui-ci n'ont pas leur méthode viewDidLoad exécutée? Sinon, comment suis-je le fais mal, et que dois-je changer.

Si ce comportement est prévu, je peux penser à quelques contournements, mais toutes les suggestions sont appréciés:

  1. Scrap la UITabBarController et mettre en œuvre la vue me commutation (en utilisant initWithNibName et ajouter / insert / push / sous-vue).
  2. Appel chacune des méthode viewDidLoad enfants manuellement dans sa propre méthode de viewDidLoad du UITabBarController.

Merci d'avance pour toute aide que vous pouvez offrir.

Était-ce utile?

La solution

OK, j'ai réussi à résoudre ce problème.

Lier la BNI à la TabBarController ne suffit pas -. Vous devez également lier le code beind fichier, il est pas lié implicitement par le NIB même si vous définissez le propriétaire du fichier correctement

Ouvrir IB, et sélectionnez la page relevent. Cliquez au milieu pour sélectionner le contrôleur de vue. Entrez le nom NIB de la vue sous, puis passez à la dernière page (option 4). Dans « l'identité de classe », entrez le nom du fichier code-behind pour la sous-vue NIB.

Tout va maintenant travailler bien.

Je l'ai téléchargé une version correcte du code exemple: http: // ajouts .omega.org.uk / Foo3-Correct.zip

Autres conseils

Vous n'êtes pas instanciation ImportedView partout dans votre projet, il est donc de ne pas appeler soit initXXX ou viewDidAnything. Si vous mettez votre code d'alerte dans -. [FirstViewController viewDidLoad], il va tirer comme prévu

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