Кодирование пользовательских SplitViewController - когда мне следует вызывать viewWillAppear, viewDidAppear и т. Д ...? - PullRequest
1 голос
/ 23 ноября 2010

Я пишу свой собственный SplitViewController с нуля (т. Е. С помощью подклассов UIViewController, а не UISplitViewController).

Он имеет два субконтроллера (один для левой панели и один для правой деталипанель), на которую мне нужно отправить соответствующие сообщения (viewWillAppear, viewDidAppear, viewWillDisapppear and viewDidDisappear).

Я уже пересылаю эти сообщения, когда мой пользовательский SplitViewController получает их, и все работает нормально.Однако я изо всех сил пытаюсь выяснить, когда отправлять их, когда любой из двух субконтроллеров заменяется новым, который также должен получать эти сообщения.Я правильно добавляю представление нового UIViewController, но сообщения не вызываются адекватно.

Мой первоначальный подход состоял в том, чтобы вызывать их в установщике sub-viewControllers, вызывая viewWillDisappear to UIViewControllerсобирается быть выпущенным и viewWillAppear для нового набора UIViewController, но этот выполняется до viewDidLoad, и поэтому я предполагаю, что это неправильно.

Я также видел, что в UIView есть метод didAddSubview:это может быть полезно знать, когда звонить viewDidAppear по корреспонденту UIViewController.

Любая помощь будет высоко ценится!

1 Ответ

2 голосов
/ 24 ноября 2010

Если вы хотите отразить 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...