当使用Three20框架时,我对TTNavigator的工作方式有疑问。如果在applicationDidFinishLaunching中,我使用以下命令恢复应用程序的先前状态:
TTNavigator* navigator = [TTNavigator navigator];
navigator.persistenceMode = TTNavigatorPersistenceModeAll;
navigator.window = self.window;
[navigator restoreViewControllers];
刚刚恢复的ViewController的方法loadView和viewDidLoad永远不会被调用。怎么会这样呢?
这是一个错误还是设计?
如果是设计,那将是一个很好的解决方案。我的问题是我希望ViewController加载它的笔尖。我已经看到了其他的变通方法,但是它们很难看并且有外部组件(比如app委托代替视图控制器本身)加载nib,我想避免。这些丑陋的解决方法的示例在随附Three20源代码的TTNibDemo示例中给出。
答案 0 :(得分:0)
这取决于你调用viewController的方式,在viewWillAppear中尝试,应该可行。
答案 1 :(得分:0)
你在设备上测试吗?
navigator.window = self.window; _ [navigator restoreViewControllers];
在设备上,第一个屏幕始终是第一个屏幕,而在模拟器上并非如此,您应该始终检查条件
if(![navigator restoreViewControllers])
// do this
else
TTNavigationController* navi = [[((MyViewController1*)[navigator topViewController]) viewControllers] objectAtIndex:0];