push viewcontroller с использованием UINavigationController иногда вызывает viewDidAppear: и viewWillAppear: - PullRequest
2 голосов
/ 19 мая 2010

При перемещении контроллера вида с помощью UINavigationController в представление:

  1. Что нужно для его срабатывания viewDidAppear: и viewWillAppear:?
  2. Что делает невозможным не запускать viewDidAppear: и viewWillAppear:?

Нам трудно полагаться на то, запускаются ли эти методы или нет.

Ответы [ 2 ]

6 голосов
/ 20 мая 2010

UINavigationController вызывает эти методы непосредственно на контроллере, который выдвигается при вызове pushViewController: animated: Аналогично, UITabBarController вызывает эти методы непосредственно при переключении вкладок, а UIViewController вызывает их при использовании presentModalViewController: animated :. Они также вызываются, когда представление контроллера представления добавляется к окну. Я никогда не видел, чтобы эти методы не вызывались в этих конкретных контекстах.

Теперь имейте в виду, что эти методы вызываются только при нажатии или представлении контроллера в этих конкретных контекстах. Эти методы не будут вызваны, например, если вы добавите представление вашего контроллера представления как подпредставление некоторого представления, отличного от UIWindow. В документации Apple говорится, что контроллеры представлений предназначены только для использования с полноэкранными представлениями, которые обычно представлены с использованием одного из методов, описанных выше. Можно проигнорировать совет Apple и связать контроллер представления с подпредставлением другого контроллера представления, но вам придется делегировать вызовы viewWill / DidAppear / Disappear из контроллера представления контейнера во вложенный контроллер вручную.

0 голосов
/ 07 июня 2010

Убедитесь, что вы правильно указали имя функции, например:

- (void)viewWillAppear:(BOOL)animated

Например, если вы забудете объявить анимированный параметр, ваша функция не будет вызвана.

Это может показаться очевидным, но я допустил эту ошибку, и, поскольку в исходном посте нет примера кода, я решил поделиться им!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...