0

考虑一个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];
}

如果是这样,必须调用哪些方法?

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

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

4

2 回答 2

2

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

相关方法是addChildViewController:didMoveToParentViewController:

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

于 2012-11-16T19:53:37.957 回答
0

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

如果没有针对 iOS 4 并且您只需要为 ios 5 及更高版本构建,请坚持使用 jrturton 所说的新 API。

于 2012-11-16T21:07:47.900 回答