La compréhension de Vue-Contrôleur de Nidification dans iOS
Ive été déchirant mes cheveux au cours de la dernière quelques jours à essayer de comprendre ce un semblant de base concept de développement iOS:
-
Si je veux avoir deux ou plusieurs Contrôleurs de Vue affiché et utilisable dans la même "page-écran", c'est:
- Pas conseillé par Apple "Un VC par page-écran de contenu"
- Tout à fait possible par l'ajout de la VC via le code
- Tout simplement pas fait. Au lieu de cela, utilisez un VC et simplement ajouter le code qui reproduit la fonctionnalité de la vue des contrôleurs que vous voulez.
Permettez-moi de reformuler un peu:
Si je voulais avoir, dans une application iPad, un UIView
(A) qui reprend une grande partie de la gauche de l'écran, et un deuxième UIView
(B) qui prend le reste de la partie droite de l'écran, et je voulais ajouter un bouton pour UIView
B que lorsque l'utilisateur clique dessus serait d'utiliser la Modale de transition pour glisser un UITableview
pour remplacer UIView B, et ce UITableview
serait alors agir comme un typique UITableviewController
selon laquelle lorsque l'utilisateur sélectionne un élément de la table, les événements typiques sont envoyés à la tableview contrôleur de pousser une nouvelle série d'articles, est-ce possible?
Il me semble juste que si je suis déjà en mesure de créer facilement des deux UIViewControllers, et disposent d'un bouton dans un VC modal à l'amener jusqu'à la seconde VC, pourquoi ne peux-je combiner cette fonctionnalité de manière à ce que l'un CR de deux enfants VCs, et ces enfants VCs gérer leurs propres modale des transitions.
Ou est la meilleure pratique dans un cas comme celui-ci pour tout simplement avoir un VC qui gère tout, et ensuite manuellement la poignée de l'animation de la glisse dans /à partir de différents points de vue à la suite de différents clique sur les différents éléments de l'INTERFACE utilisateur?
Comme vous pouvez le dire, je pense que j'ai lu à de trop nombreuses, contradictoires réponses à des questions similaires à ce que j'aie obtenu totalement confus au sujet de quoi que plus. Si jamais quelqu'un comprend ce que je suis et peut donner un coup d'explication ou de certains pointeurs Id grandement apprécier.
- Avez-vous trouvé une bonne façon de le faire dans iOS 5? Le problème que j'aimerais résoudre est bien défini dans votre référence tumblr.com/tagged/child-view-controller. Il serait bien de pouvoir imbriquer les différents éléments à l'intérieur d'un master en vue de garder la maîtrise de vue de devenir code lourd.
Vous devez vous connecter pour publier un commentaire.
La réponse dépend si vous avez besoin de soutien iOS 4 ou pas. Si oui, la réponse est:
Réponse à la question 1 - À l'exception de la Pomme de propre conteneur des contrôleurs, notamment UITabBarController, UINavigationController, UISplitViewController, UIPageViewController et UIPopoverController (ai-je raté un?) il n'est pas correctement pris en charge pour disposer de plusieurs contrôleurs de vue actif sur le même écran, gérer les différentes parties de la vue. - Vue-contrôleur des méthodes telles que presentModalViewController, etc tous les travaux sur l'hypothèse qu'il existe un unique "au premier plan" - vue-contrôleur qui est propriétaire de la totalité de l'écran, et si vous essayez d'avoir plusieurs contrôleurs de vue de gérer les différentes parties de la vue, de toutes sortes de choses se rompre, comme la transmission de la rotation de l'écran des événements et le redimensionnement/positionnement des points de vue après une transition de page.
Toutefois, si vous avez seulement besoin pour soutenir iOS 5, la réponse est:
Réponse à la question 2 - Pas de problème! Assurez-vous que tous vos sous-page-voir les contrôleurs sont correctement raccordés à un maître-vue-contrôleur qui gère l'ensemble de la page. Cela signifie que, en plus des contrôleurs de vues sous-vues d'un parent commun de vue, les contrôleurs eux-mêmes devraient être de l'enfant-les contrôleurs d'un parent commun contrôleur. Tant que le contrôleur de parentViewController propriétés sont tous réglés correctement, vous devriez être en mesure de gérer ce type d'interface composite sans trop de tracas.
Malheureusement, Apple n'a ajouté public setters pour childViewControllers et parentViewControllers dans iOS5. En iOS4 et plus tôt que vous êtes limité à Apple conteneur contrôleur arrangements et ne peut pas créer votre propre (au moins, pas sans le réacheminement d'événement problèmes).
Donc, en supposant que vous avez besoin de l'appui de l'iOS4 pour l'instant, la réponse à la question 3 qui semble être votre meilleur pari: Construire votre interface à l'aide de plusieurs points de vue, mais d'un seul contrôleur. Ce n'est pas trop mal. Vous pouvez créer un affichage personnalisé sous-classes qui gèrent héritier propre sous-vues (par exemple il n'y a aucune règle qui dit que la tableViewDataSource ou son délégué doit être une sous-classe UIViewController, ou qu'un bouton IBAction doit être une méthode sur une-vue-contrôleur à la place d'un autre point de vue).
Vous trouverez que la plupart des fonctionnalités dont vous avez normalement de construire en vue de contrôleur peuvent être intégrés dans un "smart" conteneur de vue au lieu de cela, vous permettant de diviser l'écran en plusieurs autonome "contrôleur-vues" qui gèrent leur propre contenu.
La seule c'est difficile de faire des trucs comme des transitions entre une vue à la suivante. Pour cela, vous ne serez pas en mesure d'utiliser la norme presentModalViewController ou pushViewController méthodes, vous devrez faire les animations vous-même à l'aide de CATransitions ou UIView animations.
C'est définitivement possible dans IOS 4 :
Vous avez une vue contrôleur "Un" avec son point de vue :
Sur IOS5 suffit d'utiliser la méthode de votre vue-contrôleur "A" :
La Vue de la Programmation de l'automate manuel couvre ce assez bien.
Vue contrôleur gère un ensemble de points de vue. Vous pouvez avoir l'affichage du contenu des contrôleurs et des conteneur/mode de navigation, contrôleurs de gestion, la hiérarchie de contrôleurs de vue (exemple: affichage de navigation contrôleur peut gérer une liste et d'un contrôleur de détail contrôleur).
Il est couvert de plus de détails ici:
http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457