Iphone 在iOS中嵌套UIViewController

Iphone 在iOS中嵌套UIViewController,iphone,ios,uiviewcontroller,Iphone,Ios,Uiviewcontroller,考虑一个UIViewController,其视图包含另一个UIViewController的视图 父级UIViewController负责调用子级控制器的生命周期方法是否正确?方法,例如: - (void)viewWillAppear:(BOOL)animated; - (void)viewDidAppear:(BOOL)animated; - (void)viewWillDisappear:(BOOL)animated; - (void)viewDidDisappear:(BOOL)anima

考虑一个
UIViewController
,其视图包含另一个
UIViewController
的视图

父级
UIViewController
负责调用子级控制器的生命周期方法是否正确?方法,例如:

- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
例如:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [_childViewController viewWillAppear:animated];
}
如果是,必须调用哪些方法

有更好的方法吗?显然,上述方法是不向前兼容的:如果添加了新的生命周期方法,则需要修改父类以传播新方法的调用


或者嵌套视图控制器只是一个坏主意,应该避免吗?

正确的方法是将视图控制器添加为子视图控制器。您需要同时维护视图层次结构(将视图添加为子视图)和视图控制器层次结构(将视图控制器添加为子视图)。然后为您调用所有生命周期方法

相关方法有
addChildViewController:
didMoveToParentViewController:


在WWDC 2011中有一个关于视图控制器控制的演讲,我建议观看视频

如果您想创建一个仍然支持iOS 4的层次结构,您确实需要转发addChildViewController:yourself文档中详细介绍的消息


如果iOS 4不是目标,您只需要为iOS 5及更高版本构建,请坚持使用JRTUTON所说的新API。

啊,我完全错过了这些方法!谢谢