UITabBarController在applicationDidFinishLaunching中没有加载“更多”视图

时间:2009-09-10 00:21:33

标签: iphone objective-c uitabbarcontroller state

我正在尝试恢复多标签iPhone应用程序的状态。有超过5个选项卡,每个选项卡都有自己的导航控制器。在applicationDidFinishLaunching上,我确定哪个是用户所在的最后一个选项卡并使用

进行设置

myTabController.selectedIndex = persistedTabIndex;

然后我在该选项卡的根视图控制器上调用一个函数来恢复自身。问题是,如果选项卡已移至“更多”页面,则视图尚未加载,并且调用将消失到NIL区域。有没有办法强制有问题的视图控制器加载它的视图?

非常感谢您的考虑和回应。

2 个答案:

答案 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]但它告诉标签控制器选择它之前。