2010-07-26 53 views

回答

3

您可以将您的应用程序委托设置为UITabBarController委托,并且选择该选项卡时,可以将选择以[NSUserDefaults standardDefaults]作为整数记录(选项卡栏控制器的选定索引)。

这样做是:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController; 
{ 
    [[NSUserDefaults standardDefaults] setInteger:tabBarController.selectedIndex forKey:SelectedTabIndex]; 
} 

在启动时,您可以使用-integerForKey:加载从默认选定的指数,它的默认值为零,如果未找到该键的值,或者如果该键不被解析为一个整数。

我包裹访问保存指数与方法:

- (NSUInteger)tabIndexToSelect; 
{ 
    return [[NSUserDefaults standardDefaults] integerForKey:SelectedTabIndex]; // defaults to zero 
} 

的注意事项有关NSUserDefaults ..直到他们syncronized,他们没有刷新到磁盘的持久性。如果您正在调试并终止应用程序,您会注意到这一点,而iOS尚未自动同步您的应用程序的默认值。您可以强制同步,但我宁愿将其保留,直到自动完成。要帮助用户切换选项卡然后退出的情况,请添加同步到- (void)applicationWillResignActive:(UIApplication *)application和/或- (void)applicationWillTerminate:(UIApplication *)application


引用tab选项而不是选定的索引(my bad!)。

您可以简单地为每个标签栏项目设置一个唯一的标签号码。 (在您的应用程序委托中使用枚举来保持它们的唯一性)。然后,你可以这样做:

- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed; 
{ 
    NSArray *tabBarTagOrder = [tabBarController.tabBar.items valueForKey:@"tag"]; 
    [[NSUserDefaults standardDefaults] setObject:tabBarTagOrder forKey:TabTagOrder]; 
} 

要在启动恢复顺序,您可以手动组织从默认恢复秩序标签栏项目,然后直接设置UITabBaritems财产。

+0

谢谢,这是接近我在找什么。我的意思是在定制后恢复标签顺序。 – 2010-07-26 23:53:02

+1

+1 ['NSArray valueForKey]',非常整洁!但请注意,它是'[NSUserDefaults standardUserDefaults]',而不是'[NSUserDefaults standardDefaults]'。 – herzbube 2013-05-24 21:21:41

相关问题