Le storyboard traite avec construit-dans le conteneur de vue des contrôleurs de très bien, l'affichage enchaîne pour enfant/vue de la racine de contrôleurs, de sorte que les relations sont clairement indiqués. C'est aussi bien la manière dont les enfants et les parents de la vue des contrôleurs sont séparés en différentes scènes.
Si vous souhaitez obtenir cet effet dans votre propre projet, alors il y a un truc qui n'est pas parfait, mais très simple. Dans mon exemple, supposons que j'ai un conteneur view controller qui agit comme une barre d'onglet contrôleur avec seulement deux onglets, 'gauche' et 'droite'. Je veux avoir une scène représente le parent-vue-contrôleur, et de deux scènes à la fois représenter la "gauche" de l'enfant-vue-contrôleur et le "droit" de l'enfant-vue-contrôleur.
Même si c'est impossible, ce serait bien si je pouvais créer IBOutlet
s à partir du conteneur de-vue-contrôleur à ses enfants dans les différentes scènes, et puis quand mon conteneur de-vue-contrôleur est affiché définir les relations parent/enfant selon les règles décrites à la UIViewController de la documentation. Si nous avions les références à la "gauche" et "droite" enfant de la vue des contrôleurs, puis nous avons pu définir les relations pas un problème.
Le standard de la solution à ce problème de référencement est de créer des références à l'enfant de voir les contrôleurs par glissement en Object
points de vente dans le conteneur de vue du contrôleur de scène, puis en précisant leur type de classe comme étant des instances de l'enfant-vue-contrôleur les classes.
Afin de garder les enfants séparés dans différentes scènes comme Apple intégré dans des conteneurs, cependant, nous allons utiliser un autre truc. Tout d'abord, supposons que nous avons les propriétés suivantes déclarées dans notre classe de conteneur, ContainerViewController
:
@property (nonatomic, strong, readwrite) UIViewController *leftViewController;
@property (nonatomic, strong, readwrite) UIViewController *rightViewController;
Dans notre scénario, sélectionnez la scène représentant de la "gauche" - vue-contrôleur. Dans les attributs de l'inspecteur de définir l'affichage du contrôleur identifier
de la propriété d' "cvc_leftViewController"
("cvc_" désigne ContainerViewController
, mais vraiment, l'identifiant peut être tout ce que vous voulez). Faire de même pour la vue de droite du contrôleur de scène, la valeur de l'identifiant d' "cvc_rightViewController"
.
Maintenant, insérez le code suivant dans ContainerViewController
s' viewDidLoad
méthode:
if (self.storyboard) {
_leftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"cvc_leftViewController"];
_rightViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"cvc_rightViewController"];
}
Lors de l' ContainerViewController
est chargé à partir de la table de montage séquentiel, il va aller chercher la 'gauche' et 'droite' voir les contrôleurs à partir de leurs propres scènes et de définir des références par l'intermédiaire de ses propriétés. Maintenant que vous avez le contrôle de l'enfant-vue-contrôleur cas, vous pouvez définir les relations parent/enfant comme vous le souhaitez. Pour apprendre comment le faire correctement, reportez-vous à la UIViewController de la documentation.
Cette astuce n'est pas parfait, et a de nombreuses mises en garde, mais si vous êtes prudent, vous pouvez le faire fonctionner bien pour votre projet.
Edit: Même si c'est complètement inutile et ne signifie rien, si vous avez vraiment vraiment envie d'avoir l'affichage du storyboard connexions à partir de votre conteneur à votre enfant de voir les contrôleurs, tout comme Apple intégré dans des conteneurs, il suffit d'utiliser ma méthode ci-dessus et ensuite mis en place enchaîne directement entre le conteneur de scène à l'enfant coulisses, et tout simplement ne jamais effectuer de ceux qui enchaîne. Maintenant, tout fonctionne correctement et l'air joli aussi.