请解释一下,为什么我需要使用addChildViewController:
方法?
毕竟,当我将 subview 放到 view 时[some_obj.view addSubview:some_view]
,这些 subview 知道他的控制器。
谢谢。
请解释一下,为什么我需要使用addChildViewController:
方法?
毕竟,当我将 subview 放到 view 时[some_obj.view addSubview:some_view]
,这些 subview 知道他的控制器。
谢谢。
addChildViewController
需要被调用,因为父控制器需要持有对其子视图控制器的引用以进行生命周期/后台管理......当添加为子视图时,此引用不能/不应该从 UIView 获取
您也可以通过以下方式从孩子那里参考父母self.parentViewController
苹果说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];
}