Comment créer un conteneur/enfant viewcontroller relation dans interface builder
À créer à partir du code d'une relation parent/enfant entre 2 contrôleurs de vue fondamentalement, il est juste question de faire quelque chose comme:
[self addChildViewController:childViewController];
[self.view addSubview:childViewController.view];
où auto est le parent-vue-contrôleur.
Mais, ce que si je veux créer la même relation complètement à partir de l'Interface Builder?
Ou en d'autres termes: est-il un moyen de recréer le comportement de la méthode addChildViewController à l'aide de l'Interface Builder?
Je n'ai pas trouvé beaucoup de documentation à ce sujet, voici une vieille suspens post sur le sujet: https://devforums.apple.com/message/455758#455758
Sans mise en place correcte du addChildViewController relation, aucun de la rotation méthodes sont transmis à mon enfant-vue-contrôleur, ici, d'où ma question viennent.
C'est ce que j'ai fait de l'IB:
- de glisser et de tomber un "View Controller" objet à partir de la "Bibliothèque d'Objets" panneau dans les "Objets" du panneau de
- dans l'identité de l'inspecteur, j'ai changé sa classe à mon UIViewController sous-classe ("points de Vue-Contrôleur")
- connecté à la prise de vue pour le contrôleur
- connecté à tous les autres points de vente pour le contrôleur (nom de la Liste, Tableau)
La première "Vue" de l'objet dans l'image est le point de vue de mes parents-vue-contrôleur, au lieu de cela l'a souligné la "Vue" est le point de vue de l'enfant-vue-contrôleur ("Point de Vue Contrôleur").
Le conteneur contrôleur également conserver ses enfant exemple par l'intermédiaire d'un supplément de IBOutlet:
@property (nonatomic, strong) IBOutlet ItemsViewController *itemsViewController;
Grâce
Mise à jour 1: Si je régler manuellement la relation parent/enfant dans le viewDidLoad du conteneur contrôleur, toute la rotation, les méthodes sont correctement transmis à l'enfant.
[self addChildViewController:self.itemsViewController];
Mais je ne sais pas vraiment si c'est la bonne façon de le faire, car je voudrais faire tout à l'aide de l'IB.
Mise à jour 2: Grâce à @micantox pour son astuce pour utiliser le "Conteneur" dans la Bibliothèque d'Objets, j'ai converti mon fichier xib à un Storyboard, et maintenant l'enfant-vue-contrôleur est ajouté à ses parents, donc je n'ai pas à l'ajouter manuellement à partir de code avec addChildViewController et la rotation des méthodes sont transmis comme prévu.
"Conteneur Affichage" fondamentalement, met en œuvre la intégrer segue et est prise en charge uniquement à partir d'iOS 6.
C'est une mise à jour de capture d'écran de mon Storyboard:
OriginalL'auteur ggould75 | 2013-05-13
Vous devez vous connecter pour publier un commentaire.
Le droit chemin de la création du conteneur de vues pour les enfants de vue des contrôleurs est par le biais de l'utilisation de l'objet "Conteneur" dans la Bibliothèque d'Objets. En faisant glisser l'un dans votre point de Vue du Contrôleur de scène va créer une nouvelle scène pour l'enfant-vue-contrôleur, qui peut être géré séparément de la vue parent contrôleur.
De toute façon, la façon de le faire dans l'interface builder est par le Conteneur d'objet d'Affichage dans la Bibliothèque d'Objet! Qui vous permettra de gérer votre enfant de voir du Contrôleur de vue séparément
Merci, je ne connaissais pas l'existence de cet objet, en fait je suis en train de travailler avec un seul fichier xib au lieu de avec un story-board, et il semble être uniquement disponible sur la table de montage séquentiel. Je vais l'essayer...
Le Storyboard + Conteneur d'objet d'Affichage résolu mon problème! J'ai mis à jour la première réponse.
Auriez-vous l'esprit de réglage de ma réponse comme correcte? 🙂
OriginalL'auteur micantox
Aussi, si vous essayez de créer un embed segue à une vue existante contrôleur dans votre plan de montage, de contrôle-faites glisser à partir du conteneur de vue, pas le contenant VC, VC que vous souhaitez intégrer.
OriginalL'auteur Joe Regan
Un moyen très simple de le faire est juste instancier l'enfant-vue-contrôleur par le référencement de son storyboard ID:
De cette façon, vous pouvez construire à la fois la vue des contrôleurs dans interface builder. Vous pouvez définir le storyboard ID dans interface builder: sélectionnez le point de vue du contrôleur et vous verrez un champ dans l'identité de l'inspecteur.
OriginalL'auteur inorganik