2009-08-11 4 views
0

Je démarre une application dans laquelle j'aimerais disposer de plusieurs contrôleurs de vue. Certaines vues seront affichées à l'intérieur d'un contrôleur de navigation. Je peux créer un contrôleur de navigation et y ajouter un autre contrôleur de vue instancié. Mais ce que je voudrais faire, c'est juste d'instancier un contrôleur de vue qui a sa propre vue et est le contrôleur de vue racine d'un contrôleur de vue de navigation. Donc, quand j'instancie le contrôleur de vue, je voudrais créer un contrôleur de navigation et y pousser le "self". Quand je le fais, mon simulateur se bloque et les détails ne donnent pas vraiment de raison. La console n'affiche rien. Des idées. Ma raison pour cela est de séparer la logique sans avoir un contrôleur de vue qui crée simplement un contrôleur de navigation, puis appuie sur un autre contrôleur de vue sur celui-ci en tant que contrôleur de vue racine.Un UIViewController peut-il s'ajouter à un UINavigationController?

Répondre

3

Je ne suis pas entièrement sûr de bien comprendre votre question. Pourquoi serait-il préférable que le contrôleur de vue se soit poussé vers le contrôleur de navigation? Je veux dire, vous devez instancier votre contrôleur de vue à un certain moment dans le code (soit un délégué de l'application ou un autre contrôleur de vue) de toute façon. Pourquoi ne pouvez-vous pas simplement créer le contrôleur de navigation, instancier votre VC et ensuite le pousser sur le contrôleur de navigation? Pour autant que je puisse voir, cela n'implique pas la création de contrôleurs de vue supplémentaires. Quoi qu'il en soit, avoir un contrôleur de vue décider lui-même où il est utilisé (c'est-à-dire poussé sur), n'est pas la meilleure pratique. De cette façon, vous perdez la flexibilité de l'utiliser dans d'autres contextes. Essayez toujours de coupler vos composants aussi librement que possible.

+0

Je vois ce que vous voulez dire. Je commence juste mon application et mon idée était que pour un autre contrôleur de vue utiliser ce contrôleur de vue, il pourrait simplement l'instancier et la logique de savoir si cela devrait ou non être dans un contrôleur de navigation serait transparente pour le parent. J'essaie de savoir comment gérer mes contrôleurs à vues multiples et comment ils vont interagir. N'ont pas été en mesure de trouver beaucoup de documentation couvrant cela en plus de la base quand utiliser un contrôleur de navigation, contrôleur de tabulation ..., et autres. – Brian

+0

Eh bien, un autre point que j'ai oublié de mentionner: Votre contrôleur de navigation doit avoir un parent propriétaire de quelque sorte. Soit il est ajouté à un contrôleur de barre d'onglets, instancié en tant que contrôleur de vue principal dans votre délégué d'application, soit poussé en tant que contrôleur de vue modale sur un autre contrôleur de vue. Comment votre contrôleur sub-view est-il censé faire cela? Qui sera le propriétaire du contrôleur de navigation (gestion de la mémoire)? –

+0

"mon idée était que pour un autre contrôleur de vue d'utiliser ce contrôleur de vue, il pourrait juste l'instancier et la logique de savoir si elle devrait ou non être dans un contrôleur de navigation serait transparente pour le parent" -> Je suppose que cela ne sera pas travail, car dans ce cas, le parent devrait présenter le contrôleur de navigation plutôt que votre contrôleur de sous-vue. –

Questions connexes