moreNavigationController保存设置

时间:2011-02-21 07:01:52

标签: iphone sdk save tabbar navigationcontroller

我的应用程序中有一个标签栏,它有一个“更多”标签,因为有超过五个标签。

这个“更多”标签是自动生成的,因此我认为它将全部工作“开箱即用”,但当我尝试进入“编辑”菜单时,用“更多”中的一个替换栏上的图标“看来,下次我开始申请时没有保存。

如何让用户保存此设置?

2 个答案:

答案 0 :(得分:2)

正如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;
  }

答案 1 :(得分:1)

您需要推出自己的解决方案。使用UITabBarControllerDelegate的

tabBarController:willEndCustomizingViewControllers:changed:

捕获用户完成编辑图标后的时间。然后,您可以保存用户的设置(例如,为每个选项卡分配一个数字,并将其保存到数组等),并在下次启动程序时加载它。

您可以使用

[NSUserDefaults standardUserDefaults]; 

快速保存此类设置。