Hot*_*cks 8 cocoa-touch uiviewcontroller ios
我有一个奇怪的情况 - 一个视图控制器,它创建自己的视图,loadView然后将其添加到现有视图.
以下是创建和添加VC的代码:
self.doneButtonViewController = [[DoneButtonViewController alloc] init];
[self.view addSubview:self.doneButtonViewController.view];
Run Code Online (Sandbox Code Playgroud)
该代码viewDidLoad在"父"VC中执行.
奇怪的是,viewWillAppear添加的VC的方法永远不会被调用(也不是viewDidAppear),但是viewWillDisappear添加的VC 的方法被调用(在适当的时间),正如人们所期望的那样.
关于为什么viewWillAppear没有被调用的任何线索?
WDU*_*DUK 15
如果您执行此操作,应用程序不知道子视图的视图控制器,您需要引入视图控制器包含以使根视图控制器知道.这样做会处理这样的事件.
因为loadView可以在iOS 6之前多次调用,我建议在其中创建视图控制器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];
...
}
Run Code Online (Sandbox Code Playgroud)
请参阅http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html上的 "实现容器视图控制器".