在使用Three20框架时,我对TTNavigator的工作方式有一个问题。如果在applicationDidFinishLaunching中,我使用以下命令恢复应用程序的前一个状态:
TTNavigator* navigator = [TTNavigator navigator];
navigator.persistenceMode = TTNavigatorPersistenceModeAll;
navigator.window = self.window;
[navigator restoreViewControllers];不会调用刚刚恢复的ViewController的方法loadView和viewDidLoad。怎么会这样呢?
这是个bug还是故意的?
如果它是设计出来的,那么什么将是一个很好的修复方法。我的问题是我想让ViewController加载它的nib。我见过其他的变通方法,但它们都很难看,而且有外部组件(像app委托而不是视图控制器本身)加载nib,这是我想要避免的。Three20源代码附带的TTNibDemo示例给出了这些丑陋的变通方法的一个示例。
发布于 2011-07-13 02:57:59
这取决于你调用viewController,在viewWillAppear中尝试的方式,应该是可行的。
发布于 2011-07-14 03:48:08
你是在设备上测试吗?
导航器navigator.window = self.window;_
restoreViewControllers;
在设备上,第一个屏幕始终是第一个屏幕,而在模拟器上,情况并非如此,您应该始终在检查条件之前进行检查
if(![navigator restoreViewControllers])
// do this
else
TTNavigationController* navi = [[((MyViewController1*)[navigator topViewController]) viewControllers] objectAtIndex:0];https://stackoverflow.com/questions/6667515
复制相似问题