以下示例: http://www.raddonline.com/blogs/geek-journal/iphone-sdk-uitabbarcontroller-how-to-save-user-customized-tab-order/如何保存应用程序终止时的标签栏顺序?
不适用于iOS4。
我希望能够在应用程序关闭时保存我的选项卡的顺序。
以下示例: http://www.raddonline.com/blogs/geek-journal/iphone-sdk-uitabbarcontroller-how-to-save-user-customized-tab-order/如何保存应用程序终止时的标签栏顺序?
不适用于iOS4。
我希望能够在应用程序关闭时保存我的选项卡的顺序。
您可以将您的应用程序委托设置为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];
}
要在启动恢复顺序,您可以手动组织从默认恢复秩序标签栏项目,然后直接设置UITabBar
的items
财产。
谢谢,这是接近我在找什么。我的意思是在定制后恢复标签顺序。 – 2010-07-26 23:53:02
+1 ['NSArray valueForKey]',非常整洁!但请注意,它是'[NSUserDefaults standardUserDefaults]',而不是'[NSUserDefaults standardDefaults]'。 – herzbube 2013-05-24 21:21:41