我正在从头开始编写自己的SplitViewController(即通过继承UIViewController
而不是UISplitViewController
)。
它有两个子视图控制器(一个用于左侧面板,一个用于详细信息右侧面板),我需要向其发送相应的消息(viewWillAppear, viewDidAppear, viewWillDisapppear and viewDidDisappear
)。
我已经在我的自定义SplitViewController接收它们时转发这些消息,并且它工作正常。但是,当两个子视图控制器中的任何一个被新的替换时,我正在努力弄清楚何时发送它们,这也需要接收这些消息。我正在正确地添加新UIViewController
的视图,但没有充分调用消息。
我最初的方法是在sub-viewControllers的setter中调用它们,将viewWillDisappear
调用到UIViewController
即将发布,viewWillAppear
调用新的UIViewController
集,但是这个在viewDidLoad
之前执行,因此我认为是错误的。
我还看到UIView有一个方法didAddSubview:
,可能有助于知道何时在通讯员viewDidAppear
上致电UIViewController
。
非常感谢任何帮助!
答案 0 :(得分:2)
如果你想镜像UISplitViewController,最好只有假的UIViewControllers,每当调用每个方法时都会打印出来。
关于viewWillDisappear,viewWillAppear和viewDidLoad排序的当前问题,只需执行:
-(void)setSomeViewController(UIViewController newVC)
{
[oldVC viewWillDisappear];
[newVC view]; // Causes newVC to load the view,
// and will automatically call -viewDidLoad
[newVC viewWillAppear];
[oldVC.view removeFromSuperview];
[self.view addSubview:newVC.view];
//retain and release as appropriate
// other stuff you'll need to mirror, etc. etc.
}