我的应用程序中有一个标签栏,它有一个“更多”标签,因为有五个以上的标签。
这个“更多”选项卡是自动生成的,因此我认为它可以“开箱即用”,但是当我尝试进入“编辑”菜单时,用“更多”视图中的一个图标替换栏上的图标,下次我启动应用程序时它没有保存。
如何让用户保存此设置?
我的应用程序中有一个标签栏,它有一个“更多”标签,因为有五个以上的标签。
这个“更多”选项卡是自动生成的,因此我认为它可以“开箱即用”,但是当我尝试进入“编辑”菜单时,用“更多”视图中的一个图标替换栏上的图标,下次我启动应用程序时它没有保存。
如何让用户保存此设置?
正如futureelite7所说,这就是要走的路。如果您需要帮助,我们就是这样做的:
- (void) tabBarController:(UITabBarController *)tabBarCtroller
didEndCustomizingViewControllers:(NSArray *)viewControllers
changed:(BOOL)changed {
NSUInteger count = tabBarCtroller.viewControllers.count;
NSMutableArray *tabOrderArray = [[NSMutableArray alloc] initWithCapacity:count];
for (UIViewController *viewController in viewControllers) {
NSInteger tag = viewController.tabBarItem.tag;
[tabOrderArray addObject:[NSNumber numberWithInteger:tag]];
}
[[NSUserDefaults standardUserDefaults] setObject:tabOrderArray forKey:@"savedTabOrder"];
[[NSUserDefaults standardUserDefaults] synchronize];
[tabOrderArray release];
}
在你的 applicationDidFinishLaunching
NSArray *initialViewControllers =
[NSArray arrayWithArray:self.tabBarController.viewControllers];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *tabBarOrder = [defaults arrayForKey:@"savedTabOrder"];
if (tabBarOrder) {
NSMutableArray *newViewControllers =
[NSMutableArray arrayWithCapacity:initialViewControllers.count];
for (NSNumber *tabBarNumber in tabBarOrder) {
NSUInteger tabBarIndex = [tabBarNumber unsignedIntegerValue];
[newViewControllers addObject:[initialViewControllers objectAtIndex:tabBarIndex]];
}
self.tabBarController.viewControllers = newViewControllers;
}
您需要推出自己的解决方案。使用 UITabBarControllerDelegate 的
tabBarController:willEndCustomizingViewControllers:changed:
捕获用户完成图标编辑后的时间。然后您可以保存用户的设置(例如,为每个选项卡分配一个编号,并将其保存到数组中等)并在程序下次启动时加载它。
您可以使用
[NSUserDefaults standardUserDefaults];
以快速保存此类设置。