我就是这样做的:
请注意,现在在 iOs 5 中,他们已经有了 containerView。据我所知,它并没有出现在 XIB 中。不过本质是一样的。
创建一个视图,然后调用该 ContainerView。如果您使用 XIB 样式,则需要手动设置一些东西,例如 alloc]init 子视图控制器,将其添加到父视图并将视图添加到父视图。
如果您在情节提要中执行此操作,则可以从该 ContainerView 链接到其他控制器并创建一个嵌入 segue。但是,它只适用于一个视图控制器,其余的则需要相同。
然后我这样做:
- (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'
}
多田....
现在看看 childViewControllers 集合。那是IOS5中的新功能。它所做的只是传递 viewWillAppear、viewWillDisappear、ViewDidThisandThat 和 ViewIamRotatingWillOrDidorWhatever。它的作用不止于此,但我不在乎。
因此,如果您的目标是 IOS4,您可以直接在父 viewWillAppear、viewWillDisappear、ViewDidThisandThat 和 ViewIamRotatingWillOrDidorWhatever 中分别调用所有这些。
在我的实现中,我有一个指针,指向在 ContainerView 中具有视图的任何 viewController。这样的视图会调用所有的 ViewWillorDidWhatever 函数。
我的父控制器也有几个孩子。其中大部分是没有看到的。没问题。没有看到的孩子不会获得 ViewWillorDidWhatever。
这是由 childViewControllers 自动完成的。如果您的目标是 IOS4,请查看所有子视图控制器的视图,看看是否显示了它们中的任何一个。如果显示调用他们的 ViewWillorDidWhatever。
还有一些额外的委托来通知是否将孩子添加到父母或其他什么。我没用过,也不知道是干什么用的。
最后,一些视图可能想要被驳回。父母应该这样做。我通过通知来实现这一点。但这已经超出了问题的范围。 IOS已经有modalViewController这样的功能了。