0

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

myTabController.selectedIndex = persistedTabIndex;

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

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

4

2 回答 2

1

我正在使用我在网上找到的一些代码来保存最后加载的选项卡。在我的应用委托中:

- (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

我在显示“更多...”选项卡的选项卡式界面上使用此代码。当我在“更多...”部分下的选项卡上退出时,界面会在我重新启动应用程序时返回到该选项卡。该界面不会在“更多...”表视图上重新启动,但我不认为这是一个问题。

于 2009-09-10T05:11:23.530 回答
0

这很奇怪;如果导航控制器在选项卡控制器的数组中,它应该在-loadView它被选中时像往常一样调用它的方法,无论它是否在主 4 中。您可以[thePersistedController loadView]在创建它之后尝试手动调用,但在告诉选项卡控制器选择它之前.

于 2009-09-10T03:13:17.827 回答