Почему viewDidAppear / viewWillAppear не вызывается во вложенной структуре? - PullRequest
0 голосов
/ 21 марта 2011

Пожалуйста, помогите, если у вас есть опыт, наше время тикает.

У меня есть эта структура.

AppDelegate...
...Owns a _root ViewController (its view added to window)
...what owns the _main ViewController (its view added to _root's view)
...that has a Navigation controller (its view added to _main's view)
...then different viewControllers travels in this navigation stack.

Но методы viewDidAppear / viewWillAppear не вызываются в самых внутренних видах. Я не знаю почему.

Когда я читаю документацию, там написано "когда добавлено в окно". Они работают с окнами? Не думай так. Что я должен делать? Почему эти CRUTIAL методы не вызываются?

1 Ответ

1 голос
/ 21 марта 2011

Вложение контроллеров представления не разрешено платформой.

Да, Apple делает это (например, позволяя вам встроить один из ваших контроллеров UIViewController в контроллер представления табуляции / навигации), но тогда они будутбыть теми, кто знает, как это сделать.

Это все еще возможно, перенаправляя правильные сообщения от ваших внешних контроллеров представления на ваши внутренние контроллеры представления, но это требует большой осторожности и, вероятно, не очень в будущем.доказательство.Это может спасти вас на этот раз, хотя!Т.е., если вы получите viewWillAppear в своем _root, перенаправите его в субконтроллеры субтитров и т. Д. Если вам удастся сделать это правильно для всех появлений / исчезновений, вращений, управления памятью, тогда все в порядке.

Прошло два года и теперь поддерживаются контроллеры вложенного представления: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html#//apple_ref/doc/uid/TP40007457-CH18-SW6

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