在iOS4中不起作用。
我希望能够在关闭应用程序时保存选项卡的顺序。
答案 0 :(得分: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
的说明..在它们同步之前,它们不会因为持久性而刷新到磁盘。如果您正在调试并终止应用程序,您会注意到这一点,并且iOS尚未自动同步您的应用程序的默认值。您可以强制同步,但我更愿意保留它,直到它自动完成。要帮助处理用户切换标签的情况,然后退出,请将同步添加到- (void)applicationWillResignActive:(UIApplication *)application
和/或- (void)applicationWillTerminate:(UIApplication *)application
。
参考标签顺序,而不是选择索引(我的不好!)。
您只需使用唯一的标签编号设置每个标签栏项目即可。 (在您的app委托中使用枚举以保持它们的唯一性)。然后你可以这样做:
- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed;
{
NSArray *tabBarTagOrder = [tabBarController.tabBar.items valueForKey:@"tag"];
[[NSUserDefaults standardDefaults] setObject:tabBarTagOrder forKey:TabTagOrder];
}
要在启动时恢复订单,您可以按默认值恢复的顺序手动整理标签栏项目,然后直接设置items
的{{1}}属性。
答案 1 :(得分:0)