首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Three20:通过TTNavigator还原时未调用loadView和viewDidLoad

Three20:通过TTNavigator还原时未调用loadView和viewDidLoad
EN

Stack Overflow用户
提问于 2011-07-13 00:16:47
回答 2查看 388关注 0票数 0

在使用Three20框架时,我对TTNavigator的工作方式有一个问题。如果在applicationDidFinishLaunching中,我使用以下命令恢复应用程序的前一个状态:

代码语言:javascript
复制
TTNavigator* navigator = [TTNavigator navigator];
navigator.persistenceMode = TTNavigatorPersistenceModeAll;
navigator.window = self.window;
[navigator restoreViewControllers];

不会调用刚刚恢复的ViewController的方法loadView和viewDidLoad。怎么会这样呢?

这是个bug还是故意的?

如果它是设计出来的,那么什么将是一个很好的修复方法。我的问题是我想让ViewController加载它的nib。我见过其他的变通方法,但它们都很难看,而且有外部组件(像app委托而不是视图控制器本身)加载nib,这是我想要避免的。Three20源代码附带的TTNibDemo示例给出了这些丑陋的变通方法的一个示例。

EN

回答 2

Stack Overflow用户

发布于 2011-07-13 02:57:59

这取决于你调用viewController,在viewWillAppear中尝试的方式,应该是可行的。

票数 0
EN

Stack Overflow用户

发布于 2011-07-14 03:48:08

你是在设备上测试吗?

导航器navigator.window = self.window;_

restoreViewControllers;

在设备上,第一个屏幕始终是第一个屏幕,而在模拟器上,情况并非如此,您应该始终在检查条件之前进行检查

代码语言:javascript
复制
if(![navigator restoreViewControllers])
  // do this
else 
  TTNavigationController* navi = [[((MyViewController1*)[navigator topViewController]) viewControllers] objectAtIndex:0];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6667515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档