2010-09-16 7 views
3

J'ai travaillé sur une application iPad qui a environ 15 contrôleurs de vue. Certains des contrôleurs de vue sont en plein écran, d'autres sont intégrés dans les autres contrôleurs de vue (pensez contrôleur de vue partagée).Modèles de navigation iPad

Sur la navigation iPhone est très simple. Même si vous avez une tonne de contrôleurs de vue, vous utilisez l'un des contrôleurs de vue racine d'Apple (onglet ou navigation). La navigation est gérée par les contrôleurs de vue racine et vous êtes pratiquement libre de vous concentrer sur vos vues.

Sur l'iPad les contrôleurs de vue partagé et afficher l'onglet ne sont pas toujours utiles, et pour l'application je travaille sur ils ne coupent pas. J'ai créé des objets de contrôleur de navigation distincts pour gérer les masques de visualisation/affichage en fonction des notifications qui sont affichées lorsque l'utilisateur effectue des actions.

Quelqu'un d'autre a l'expérience avec la résolution du problème de navigation sur l'iPad?

Répondre

3

Avez-vous vérifié MGSplitViewController par Matt Gemmell?
http://mattgemmell.com/2010/08/03/mgsplitviewcontroller-updated

Je ne prétends pas que ça va résoudre tous vos problèmes de navigation, mais il est une idée intéressante et peut vous aider à trouver plus/meilleures façons de gérer les contrôleurs de vue.

+0

Merci pour l'info. J'avais lu à ce sujet il y a quelque temps, mais je n'y ai pas prêté attention. Je vais le faire maintenant, merci! – logancautrell

0

Aussi, soyez prudent en utilisant plusieurs contrôleurs de vue pour les vues qui ne remplissent pas le plein écran. La documentation d'Apple stipule explicitement que vous ne devriez pas utiliser la vue des contrôleurs pour les vues écran partiel:

Remarque: Vous ne devriez pas utiliser les contrôleurs de vue pour gérer les vues qui remplissent seulement une partie de leur fenêtre qui est, seule une partie la zone définie par le rectangle du contenu de l'application. Si vous souhaitez disposer d'une interface composée de plusieurs vues plus petites, intégrez-les dans une vue racine unique et gérez cette vue avec votre contrôleur de vue.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

Bien que certaines choses pourraient fonctionner lorsque vous avez plusieurs contrôleurs de vue gestion des différentes sous-vues, d'autres choses ne fonctionnera pas. Par exemple, un seul de vos contrôleurs de vue sera informé lors de la rotation de l'appareil. De même, tous les contrôleurs de vue ne recevront pas les messages 'viewWillAppear' 'viewDidUnload' etc auxquels vous pourriez vous attendre.

+1

Cette documentation a été écrite avant l'iPad. Il n'est vraiment pas réaliste de faire en sorte que tous vos écrans séparent les contrôleurs de vue sur l'iPad. Dans toute application non triviale, il y a tout simplement trop de choses à faire pour qu'un seul contrôleur de vue gère toutes les vues. Bien que vous deviez manipuler manuellement certaines méthodes comme viewWillAppear :, les méthodes liées à la gestion de la mémoire * sont toujours invoquées correctement. – logancautrell

1

Avec iOS 5 d'Apple a ajouté le concept de contrôleurs Container View. Cela facilite l'ajout et le retrait des enfants, en permettant d'appeler automagiquement leurs méthodes de rotation/apparition/disparition. Truc cool!

Questions connexes