我有一个奇怪的情况 - 一个视图控制器,它在loadView
中创建自己的视图,然后将其添加到现有视图中。
以下是创建和添加VC的代码:
self.doneButtonViewController = [[DoneButtonViewController alloc] init];
[self.view addSubview:self.doneButtonViewController.view];
此代码在“父”VC的viewDidLoad
中执行。
奇怪的是,添加的VC的viewWillAppear
方法永远不会被调用(也不是viewDidAppear
),但添加的VC 的viewWillDisappear
方法是调用(在适当的时候),正如人们所期望的那样。
有关为什么viewWillAppear
未被调用的任何线索?
答案 0 :(得分:15)
如果执行此操作,应用程序不知道子视图的视图控制器,您需要引入视图控制器包含以使根视图控制器知晓。这样做会处理这样的事件。
因为在iOS 6之前可以多次调用loadView
,我建议在init
内创建视图控制器,然后在loadView
中添加子视图。它应该是这样的:
- (id)init {
...
self.doneButtonViewController = [[DoneButtonViewController alloc] init];
[self addChildViewController:self.doneButtonViewController];
[self.doneButtonViewController didMoveToParentViewController:self];
...
}
- (void)loadView {
...
[self.view addSubview:self.doneButtonViewController.view];
...
}
上的“实施容器视图控制器”
答案 1 :(得分:1)
对于我来说,在父视图控制器中添加子视图控制器可以解决子视图控制器的“viewWillAppear”未被调用的问题。