1

私は自分のSplitViewControllerを最初から書いています(つまり、サブクラスUIViewController化ではなくUISplitViewController)。

2つのサブviewController(1つは左側のパネル用、もう1つは詳細な右側のパネル用)があり、適切なメッセージを送信する必要があります(viewWillAppear, viewDidAppear, viewWillDisapppear and viewDidDisappear)。

カスタムSplitViewControllerがメッセージを受信したときに、すでにそれらのメッセージを転送していて、正常に機能しています。ただし、2つのサブビューコントローラーのいずれかが新しいものに置き換えられたときにそれらを送信するタイミングを理解するのに苦労しています。新しいものもそれらのメッセージを受信する必要があります。新しいビューを適切に追加していUIViewControllerますが、メッセージが適切に呼び出されていません。

私の最初のアプローチは、sub-viewControllersのセッターでそれらを呼び出し、リリースviewWillDisappearUIViewControllerれようとviewWillAppearしている新しいUIViewControllerセットを呼び出すことでしたが、これは以前に実行されたviewDidLoadため、間違っていると思います。

また、UIViewには、コレスポンデントdidAddSubview:をいつ呼び出すかを知るのに役立つ可能性のあるメソッドがあることもわかりました。viewDidAppearUIViewController

どんな助けでも大歓迎です!

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 に答える