Three20: loadView и viewDidLoad не вызываются при восстановлении через TTNavigator - PullRequest
0 голосов
/ 12 июля 2011

При использовании фреймворка Three20 у меня возникает проблема с тем, как работает TTNavigator.Если в applicationDidFinishLaunching я восстанавливаю предыдущее состояние приложения с помощью:

TTNavigator* navigator = [TTNavigator navigator];
navigator.persistenceMode = TTNavigatorPersistenceModeAll;
navigator.window = self.window;
[navigator restoreViewControllers];

Методы loadView и viewDidLoad только что восстановленного ViewController никогда не вызываются.Как это может быть так?

Это ошибка или дизайн?

Если бы это было задумано, что было бы хорошим решением.Моя проблема в том, что я хочу, чтобы ViewController загружал его кончик.Я видел другие обходные пути, но они уродливы и имеют внешний компонент (например, делегат приложения вместо самого контроллера представления), загружающий перо, которого я хотел бы избежать.Пример этих уродливых обходных путей приведен в примере TTNibDemo, который поставляется с исходным кодом Three20.

Ответы [ 2 ]

0 голосов
/ 13 июля 2011

Тестируете ли вы на устройстве?

navigator.window = self.window; _ [навигатор restoreViewControllers];

На устройстве первый экран всегда является первым экраном, тогда как на симуляторе это не так, и вы всегда должны проверять это с условием

if(![navigator restoreViewControllers])
  // do this
else 
  TTNavigationController* navi = [[((MyViewController1*)[navigator topViewController]) viewControllers] objectAtIndex:0];
0 голосов
/ 12 июля 2011

Зависит от того, как вы вызываете viewController, попробуйте в viewWillAppear, должно работать.

...