Je souhaite ajouter un tableViewController en tant que contrôleur de vue enfant d'un containerViewController (illustré ci-dessous). Selon Apple View Controller Programming Guide je peux y parvenir par les lignes suivantes de code à l'intérieur de mon containerViewController:Ajouter une vue de contrôleur de vue enfant à une sous-vue du contrôleur de vue parent
[self addChildViewController:tableViewController];
[self.view addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];
En fait, qui fonctionne très bien. Maintenant, le problème est que je ne veux pas ajouter la vue de tableViewController en tant que sous-vue de la vue racine de containerViewController. Au lieu de cela, je veux l'ajouter comme une sous-vue du containerView (voir image) qui est elle-même une sous-vue de la vue racine de containerViewController. Donc, j'ai changé le code ci-dessus comme suit:
[self addChildViewController:tableViewController];
[self.contentView addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];
Maintenant, quand je lance l'application, il se bloque immédiatement avec cette erreur:
Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller: should have parent view controller: but actual parent is:'
Quel est le problème ici? Est-il impossible d'ajouter la vue d'un enfantViewController à une vue spécifique de son containerViewController? sub? Ou comment puis-je y parvenir sans erreur dans la hiérarchie du contrôleur de vue?
Êtes-vous sûr et avez-vous testé ce code? J'ai essayé cela et cela * fait * une différence si vous ajoutez la vue de childViewController à la vue racine de containerViewController ou à l'une de ses sous-vues. – Mischa
@Mischa Code source inclus à la réponse. Vérifiez s'il vous plaît. – Anupdas
+1 pour tableViewController.view.frame = self.contentView.bounds; – onmyway133