2012-01-25 6 views
1

Im переход от одного контроллера вида к другому UINavigationController с помощью модального перехода. Для меня важно, чтобы этот контроллер представления (и его контроллеры дочерних элементов) оставался в памяти, поэтому конкретные ссылки поддерживаются. Хотя очевидно, что этого не происходит. При отладке функции viewWillAppearrootViewController (viewControllers [0]) указывает на разные адреса памяти между вызовами (и содержит значения nil, моя фактическая проблема). Теперь есть две возможности, которые могли бы вызвать эту проблему:Модальные секги создают новые объекты?

  • UINavigationController стал разрушенную
  • The RootViewController стали уничтожены

Но чтобы сделать это действительно сбивает с толку, никто из них не случилось; ни UINavigationController, ни rootViewController не были уничтожены (viewDidUnload не вызван!).

Редактировать: Дальнейшие исследования обнаружили, что UINavigationController действительно воссоздан для каждого модального сеанса. Надеюсь, что, сохранив свойство, я могу решить проблему.

ответ

0

Наконец-то я создал свои собственные функции IBAction, которые представляют контроллер вручную. Это работает отлично и кодируется менее чем за 5 минут. Нужно просто один раз запустить контроллер на ViewDidLoad из раскадровки.

0

Создайте прочную ссылку в главном контроллере представления и назовите новые контроллеры представлений этому свойству. Это будет поддерживать просмотр до тех пор, пока вам нужно, хотя это не рекомендуется для n количества просмотров, потому что это побеждает цель контроллера навигации, обрабатывающего его собственное создание и удаление представлений.