首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >app销毁时如何保存页签栏顺序?

app销毁时如何保存页签栏顺序?
EN

Stack Overflow用户
提问于 2010-07-27 05:24:21
回答 2查看 2.4K关注 0票数 1

以下示例:http://www.raddonline.com/blogs/geek-journal/iphone-sdk-uitabbarcontroller-how-to-save-user-customized-tab-order/

在iOS4中不起作用。

我希望能够在应用程序关闭时保存我的选项卡的顺序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-27 07:42:24

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

在以下位置执行此操作:

代码语言:javascript
复制
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
{
    [[NSUserDefaults standardDefaults] setInteger:tabBarController.selectedIndex forKey:SelectedTabIndex];
}

在启动时,您可以使用-integerForKey:从默认值加载选定的索引,如果没有找到该键的值,或者如果该键没有被解析为整数,它将缺省为零。

我用一个方法包装了对保存的索引的访问:

代码语言:javascript
复制
- (NSUInteger)tabIndexToSelect;
{
    return [[NSUserDefaults standardDefaults] integerForKey:SelectedTabIndex]; // defaults to zero
}

关于NSUserDefaults的注意事项..在同步它们之前,不会将它们刷新到磁盘以实现持久性。如果你正在调试和终止应用程序,你会注意到这一点,而iOS没有自动同步你的应用程序的默认设置。您可以强制同步,但我更喜欢将其保留到自动完成。为了帮助处理用户切换选项卡然后退出的情况,请将synchronize添加到- (void)applicationWillResignActive:(UIApplication *)application和/或- (void)applicationWillTerminate:(UIApplication *)application

指的是Tab键顺序,而不是选定的索引(我的错!)。

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

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

若要在启动时恢复顺序,可以按从默认值恢复的顺序手动组织选项卡栏项目,然后直接设置UITabBaritems属性。

票数 3
EN

Stack Overflow用户

发布于 2011-04-04 22:01:58

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3339117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档