2009-11-11 6 views
0

J'essaie d'ajouter plusieurs vues à l'intérieur d'un UITabBarController. Actuellement, ma hiérarchie d'objets ressemble à ceci: UITabBarController -> UIViewController * -> UIView *. À titre d'exemple plus concret, le premier contrôleur de vue pour mon UITabBarController est un UIViewController, et qui a trois sous-vues, qui sont contrôlées par un UISegmentedControl. Selon le segment sélectionné, je pousse la vue correspondante vers l'avant. Je comprends que je peux utiliser un UINavigationController pour gérer mes trois vues; Cependant, les données que je souhaite présenter ne sont pas vraiment hiérarchiques.Vues et contrôleurs multiples dans UITabBarController

Existe-t-il des exemples de contrôleurs de conteneur autres que UITabBarController ou UINavigationController que je peux utiliser dans ce cas? Ou y a-t-il une autre approche que je devrais utiliser (je gère actuellement les vues manuellement).

Merci!

Répondre

1

Custom view controllers sont traités dans le Guide de programmation de View Controller. Si vous souhaitez modifier votre disposition pour utiliser UINavigationController, vous pouvez supprimer la vue de contrôle segmentée et faire en sorte que la première vue soit une vue de table dans un contrôleur de navigation. La table aurait les trois options que le contrôle segmenté avait et en tapant dessus, elle pousserait la vue associée à cette option. De cette façon, vous avez créé une présentation hiérarchique plutôt que d'utiliser le contrôle segmenté, qui est généralement utilisé pour basculer entre les fonctionnalités plutôt que pour contrôler les vues.

Si vous choisissez de le faire, les sections de guide thesetwo seraient un bon point de départ.

+0

Merci Ben. Le problème avec l'approche du contrôleur de table et de navigation est que le passage d'une vue à une autre nécessiterait d'apparaître sur la table et de pousser le nouveau contrôleur (c'est-à-dire 2 clics). J'aimerais que les utilisateurs puissent basculer entre différentes vues en un seul clic. Y a-t-il une alternative à cela que vous pourriez recommander? – spinlock

+0

Ensuite, vous devez continuer à utiliser UIViewController avec le contrôle segmenté. Si les trois sous-vues sont suffisamment petites, les utilisateurs ne doivent pas être déroutés. –

+0

Vous pouvez utiliser UINavigationController pour définir la pile comme vous le souhaitez en utilisant setViewControllers: animated: –

0

Il n'y a pas vraiment de framework de support pour cela - en général, vous devez gérer vous-même la désactivation des vues dans une vue de conteneur commutée. Une approche que j'ai prise dans le passé est de maintenir un tableau de ViewControllers pour chaque vue de commutation, et prendre le viewController.view à ajouter comme une sous-vue de votre vue de conteneur commuté. Ensuite, j'écris du code autour de la commutation des contrôleurs de vue pour appeler viewWillAppear et viewWillDisappear sur les contrôleurs de vue contenus comme ils sont permutés et inversés, ce qui rend les choses beaucoup plus simples puisque vous pouvez les traiter totalement séparément.

Vous pouvez écrire cette classe de manière générique, puis la réutiliser.

Questions connexes