Est-ce généralement une mauvaise pratique de programmation dans iOS d'avoir une vue de contrôleur de vue imbriquée dans la vue de UIViewController? Disons, par exemple, que je voulais avoir une sorte d'élément interactif qui répond aux touches de l'utilisateur, mais qui ne prend que 25% de l'écran.
Je suppose que j'ajouterais ce contrôleur de vue imbriqué à mon UIViewController en disant quelque chose comme:
[self.view addSubview: nestedViewController.view];
Réponses:
Non, c'est généralement une bonne conception, cela permet de garder vos contrôleurs de vue concis. Cependant, vous devriez utiliser le modèle de confinement du contrôleur de vue, consultez la documentation suivante.
Implémentation d'un contrôleur de vue de conteneur
Ceci est incroyablement simple à configurer à l'aide d'Interface Builder avec des storyboards, jetez un œil à la vue Conteneur dans la bibliothèque d'objets.
Voici un exemple artificiel dans un Storyboard. Dans cet exemple, vous auriez 4 contrôleurs de vue, un contenant les 3 conteneurs et un pour chaque conteneur. Lorsque vous présentez le contrôleur le plus à gauche qui a tous les conteneurs, le Storyboard initialisera et incorporera automatiquement les autres 3. Vous pouvez accéder à ces contrôleurs de vue enfants via la
childViewControllers
propriété ou il existe une méthode que vous pouvez remplacerprepareForSegue:sender:
et capturer les contrôleurs de vue de destination de la suite sur le point d'être appelée. C'est également un bon point pour transmettre des propriétés aux contrôleurs de vue enfants, le cas échéant.la source
J'ai mis ce code dans le contrôleur de vue parent. Ça marche bien pour moi.
Obj C
Swift :
Une autre option consiste à utiliser IB et à mettre la vue conteneur. UIViewController apparaîtra automatiquement (XCode 9 dans ce cas):
la source
Voici ma solution Swift 3 basée sur la réponse de Swift Developers On FB
la source