1

Est-il possible d'avoir un seul écran iPhone avec son affichage chargé depuis un xib par UIViewController de cet écran, mais un autre UIView dans cet écran avec le contenu chargé à partir d'un fichier xib séparé? Si oui, est-il possible que les événements de cette vue imbriquée soient gérés par une sous-classe UIViewController personnalisée distincte du reste de l'écran? Si ces deux choses sont possibles, sont-elles également recommandées?iPhone - Vues et contrôleurs imbriqués

Répondre

7

C'est possible. Apple suggère de ne pas avoir plus d'un UIViewController actif sur l'écran à la fois, donc ils déconseilleraient. Je suggérerais seulement de le faire si la raison pour le contrôleur de seconde vue est la navigation ou modale. Un contrôleur de vue dans le but de charger d'autres contrôleurs de vue, comme un contrôleur de navigation, a besoin d'un certain espace d'écran pour lui-même et utilise le reste pour charger un autre contrôleur de vue. C'est bon. Le critère ici est qu'un seul contrôleur présente du contenu tandis que l'autre présente la navigation.

Un contrôleur de vue peut charger un autre contrôleur de vue pour effectuer une tâche limitée, par exemple sélectionner un élément dans une liste ou entrer du texte. Le deuxième contrôleur de vue peut seulement remplir une partie de l'écran. Le critère ici est que le contrôleur se comporte de manière modale et ne sera affiché que suffisamment longtemps pour obtenir une entrée de l'utilisateur. En ce qui concerne le cas général de la division de l'écran entre deux contrôleurs de vue présentant du contenu, la suggestion d'Apple est que vous ayez une seule classe dérivée de UIViewController pour gérer les vues. Si la vue est suffisamment complexe pour justifier d'autres contrôleurs, dérivez-la de NSObject et demandez au contrôleur de vue principale de gérer les contrôleurs enfants avec les vues. Les contrôleurs enfants auraient le contrôleur principal en tant que délégué et le contrôleur maître transmettrait des vues aux contrôleurs enfants pour les gérer mais pas les posséder.

+0

Excellente réponse informative. On dirait que je peux me qualifier ... mais votre réponse me fait penser qu'il pourrait y avoir un meilleur moyen. Je suis très nouveau à l'objectif-c et relativement nouveau à la programmation orientée objet/mvc. Je pense que la bonne façon de faire ce que j'ai besoin est de sous-classer UIViewController et ensuite de sous-classer cette classe personnalisée à partir d'une variété de contrôleurs de vue. Je vous remercie. – codemonkey

+0

Je crée également une classe de base UIViewController personnalisée pour la plupart de mes projets. – drawnonward

Questions connexes