ViewController жизненный цикл UINavigationController - PullRequest
0 голосов
/ 24 июня 2011

У меня есть массив контроллеров UIViewController, которые я отображаю в своем контроллере корневого представления UINavigationController ... У меня проблема с одним из моих контроллеров, который я помещаю в стек.Он должен представлять UIImagePickerController каждый раз, когда viewDidLoad, однако делает это только при первом нажатии.Чтобы обойти это, я реализую UINavigationControllerDelegate в моем Root View Controller:

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    [viewController viewDidAppear:animated];
}

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    [viewController viewWillAppear:animated];
}

Проблема состоит в том, что он вызывает эти сообщения дважды при первом нажатии ... иначе было бы здорово.Чего мне не хватает?

1 Ответ

0 голосов
/ 24 июня 2011

Возможно, вы хотите показать UIImagePickerController в viewDidAppear: вместо viewDidLoad :. Поскольку ваши контроллеры представления хранятся в массиве, они создаются только один раз, поэтому viewDidLoad: скорее всего, будет вызываться только один раз на каждом контроллере представления. viewDidAppear: будет вызываться при каждом нажатии или представлении контроллера представления.

Если ваше приложение попало в состояние нехватки памяти, возможно, что viewDidUnload: будет вызван в какой-то момент, что приведет к повторному вызову viewDidLoad: в более поздний момент, но вы вообще не можете на это полагаться.

...