2
请说明一下,为什么我需要用addChildViewController:
方法?
毕竟,当我把子视图查看[some_obj.view addSubview:some_view]
,这些子视图知道他的控制器。为什么需要使用'addChildViewController:'方法
谢谢。
请说明一下,为什么我需要用addChildViewController:
方法?
毕竟,当我把子视图查看[some_obj.view addSubview:some_view]
,这些子视图知道他的控制器。为什么需要使用'addChildViewController:'方法
谢谢。
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];
}
父控制器不知道新的ViewController是你刚刚添加了,所以它如何知道转发生命周期事件和轮换等...... – 2012-07-11 10:51:03
但是,正如在Apple [文档]中说的那样(http://developer.apple.com/library/ios/#documentation/EventHandling/概念/ EventHandlingiPhoneOS/event_delivery_responder_chain/event_delivery_responder_ chain.html#// apple_ref/doc/uid/TP40009541-CH4-SW2),如果视图无法处理事件(响应链),则视图会将事件传递到视图的视图控制器。 如果我在层次结构中查看视图,可以将事件传递到视图的视图控制器。 – Lexandr 2013-04-04 10:28:38
父控制器不知道新视图控制器。例如。父控制器不知道它需要转发它的生命周期事件,比如'viewDidLoad'等 – 2013-04-04 10:59:21