以下示例:http://www.raddonline.com/blogs/geek-journal/iphone-sdk-uitabbarcontroller-how-to-save-user-customized-tab-order/
在iOS4中不起作用。
我希望能够在应用程序关闭时保存我的选项卡的顺序。
发布于 2010-07-27 07:42:24
您可以将您的应用程序委托也设置为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没有自动同步你的应用程序的默认设置。您可以强制同步,但我更喜欢将其保留到自动完成。为了帮助处理用户切换选项卡然后退出的情况,请将synchronize添加到- (void)applicationWillResignActive:(UIApplication *)application和/或- (void)applicationWillTerminate:(UIApplication *)application。
指的是Tab键顺序,而不是选定的索引(我的错!)。
您可以简单地为每个选项卡栏项目设置一个唯一的标签编号。(在您的应用程序委托中使用枚举以保持它们的唯一性)。然后你可以这样做:
- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed;
{
NSArray *tabBarTagOrder = [tabBarController.tabBar.items valueForKey:@"tag"];
[[NSUserDefaults standardDefaults] setObject:tabBarTagOrder forKey:TabTagOrder];
}若要在启动时恢复顺序,可以按从默认值恢复的顺序手动组织选项卡栏项目,然后直接设置UITabBar的items属性。
发布于 2011-04-04 22:01:58
https://stackoverflow.com/questions/3339117
复制相似问题