1

我正在从头开始编写自己的 SplitViewController(即通过子类化UIViewController而不是UISplitViewController)。

它有两个子视图控制器(一个用于左侧面板,一个用于细节右侧面板),我需要向其发送适当的消息 ( viewWillAppear, viewDidAppear, viewWillDisapppear and viewDidDisappear)。

当我的自定义 SplitViewController 接收到这些消息并且它工作正常时,我已经在转发这些消息。但是,当两个子视图控制器中的任何一个被一个新的子视图控制器替换时,我正在努力弄清楚何时发送它们,它也需要接收这些消息。我正在UIViewController正确添加新视图,但未充分调用消息。

我最初的方法是在 sub-viewControllers 的 setter 中调用它们,调用viewWillDisappear即将UIViewController发布viewWillAppear的新UIViewController集合,但是这个是之前执行的viewDidLoad,因此我认为是错误的。

我还看到 UIView 有一个方法didAddSubview:可能有助于了解何时调用viewDidAppear通讯员UIViewController

任何帮助将非常感激!

4

1 回答 1

2

如果你想镜像 UISplitViewController,似乎最好只使用虚拟 UIViewController,每当调用每个方法时都会打印出来。

至于你目前对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.
}
于 2010-11-23T22:07:48.580 回答