我正在尝试恢复多标签iPhone应用程序的状态。有超过5个选项卡,每个选项卡都有自己的导航控制器。在applicationDidFinishLaunching上,我确定哪个是用户所在的最后一个选项卡并使用
进行设置myTabController.selectedIndex = persistedTabIndex;
然后我在该选项卡的根视图控制器上调用一个函数来恢复自身。问题是,如果选项卡已移至“更多”页面,则视图尚未加载,并且调用将消失到NIL区域。有没有办法强制有问题的视图控制器加载它的视图?
非常感谢您的考虑和回应。
答案 0 :(得分:1)
我正在使用我在网络上找到的一些代码来保存最后加载的标签。在我的app delegate中:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
// .. my app set up is here
// Select the tab that was selected on last shutdown
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger whichTab = [defaults integerForKey:kSelectedTabDefaultsKey];
self.tabBarController.selectedIndex = whichTab;
}
- (void)applicationWillTerminate:(UIApplication *)application
{
// Save the current tab so the user can start up again in the same place.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger whichTab = self.tabBarController.selectedIndex;
[defaults setInteger:whichTab forKey:kSelectedTabDefaultsKey];
}
和我的界面文件中的定义:
#define kSelectedTabDefaultsKey @"SelectedTab"
除非用户重新排列选项卡,否则这种情况有效,在这种情况下,您必须更新选项卡数组(索引将更改)。
这是我找到代码的原始页面:
http://iphonedevelopment.blogspot.com/2009/09/saving-tabs.html
我在选项卡式界面上使用此代码,该界面显示“更多...”选项卡。当我退出“更多...”部分下的选项卡时,界面会在我重新启动应用程序时返回到该选项卡。界面不会在“更多...”表视图中重新启动,但我不认为这是一个问题。
答案 1 :(得分:0)
那很奇怪;如果导航控制器位于选项卡控制器的数组中,它应该在选中时调用-loadView
方法,无论它是否在主4中。您可以尝试在创建后手动调用[thePersistedController loadView]
但它告诉标签控制器选择它之前。