Voici comment je l'ai fait:
Notez que maintenant iOs 5 qu'ils ont déjà containerView. Pour tout ce que je sais, il n'apparaît pas dans XIB. Cependant, l'essence est la même.
Créez une vue et appelez ContainerView. Si vous le faites dans le style XIB, vous devez définir des éléments manuellement comme alloc] init le contrôleur enfant View, en l'ajoutant au parent et en ajoutant la vue à la vue du parent.
Si vous le faites dans le storyboard, vous pouvez lier à partir de ce ContainerView vers un autre contrôleur et créer un segment intégré. Cependant, cela ne fonctionne que pour un contrôleur de vue et vous avez besoin de la même chose pour le reste.
Puis-je faire cela:
- (void)viewDidLoad
{
[super viewDidLoad];
PO(self.childViewControllers);
BGCRListBusinessViewController * theListController= [[BGCRListBusinessViewController alloc]init];
self.listBusinessViewController = theListController;
[self addChildViewController:theListController];
...
for (UIViewController * child in self.childViewControllers) {
child.view.frame=self.ContainerView.bounds;
}
//PO(self.ChangeFilter.BackgroundImage);
//PO
//self.ChangeFilter setBackgroundImage:[UIImage imageNamed:@] forState:<#(UIControlState)#>
[self.ContainerView addSubview:self.listBusinessViewController.view];// initialize'
}
Tada ....
Maintenant, regardez cette collection childViewControllers. Celui-là est nouveau dans IOS5. Tout ce qu'il fait, est de passer viewWillAppear, viewWillDisappear, ViewDidThisandThat, et ViewIamRotatingWillOrDidorWhatever. Ça fait un peu plus que ça, mais ça m'est égal. Par conséquent, si vous visez l'IOS4, vous pouvez simplement appeler tous ceux directement dans les vues parentes, respectivementWillAppear, viewWillDisappear, ViewDidThisandThat et ViewIamRotatingWillOrDidorWhatever.
Dans ma mise en œuvre, j'ai un pointeur vers quel viewController a la vue dans ContainerView. De telles vues obtiendront toutes ces fonctions de ViewWillorDidWhatever appelées.
Mon contrôleur parent a également plusieurs enfants. La plupart d'entre eux ne sont pas vus. Aucun problème. Les enfants qui ne sont pas visibles ne verront pas ViewWillorDidWhatever.
Ceci est fait automatiquement par les contrôleurs childViewControllers. Si vous visez l'IOS4, regardez à travers tous vos enfants voir la vue des contrôleurs et voir si l'un d'entre eux est affiché. Si affiché, appelez leur ViewWillorDidWhatever.
Il existe également un délégué supplémentaire qui notifie si un enfant est ajouté à un parent ou autre. Je n'ai pas utilisé ça et je ne sais pas à quoi ça sert.
Enfin, certaines vues peuvent vouloir être ignorées. Les parents devraient le faire. J'accomplis cela avec notification. Mais c'est déjà au-delà de la question. IOS a déjà une telle fonction pour modalViewController.