请解释一下,为什么我需要使用addChildViewController:
方法?
毕竟,当我把子视图放到[some_obj.view addSubview:some_view]
时,这些子视图知道他的控制器。
感谢。
答案 0 :(得分:1)
addChildViewController
需要调用,因为父控制器需要持有对其子视图控制器的引用以进行生命周期/后台管理...当添加为子视图时,不能/不应该从UIView获取此引用
您也可以通过self.parentViewController
Apple说addChildViewController
将给定的视图控制器添加为子级。如果是新的子视图 控制器已经是容器视图控制器的子代,它是 在添加之前从该容器中删除。这种方法只是 旨在由自定义容器视图的实现调用 控制器。如果您覆盖此方法,则必须在您的方法中调用super 实施
对于添加/删除,您可以参考这个伟大的类别,不用担心何时调用它:
- (void)containerAddChildViewController:(UIViewController *)childViewController {
[self addChildViewController:childViewController];
[self.view addSubview:childViewController.view];
[childViewController didMoveToParentViewController:self];
}
- (void)containerRemoveChildViewController:(UIViewController *)childViewController {
[childViewController willMoveToParentViewController:nil];
[childViewController.view removeFromSuperview];
[childViewController removeFromParentViewController];
}