moreNavigationController 保存设置

Posted

技术标签:

【中文标题】moreNavigationController 保存设置【英文标题】:moreNavigationController save settings 【发布时间】:2011-02-21 07:01:52 【问题描述】:

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

这个“更多”选项卡是自动生成的,因此我认为它可以“开箱即用”,但是当我尝试进入“编辑”菜单时,将栏上的图标替换为“更多”中的图标"查看,下次启动应用程序时它没有保存。

如何让用户保存此设置?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

tabBarController:willEndCustomizingViewControllers:changed:

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

你可以使用

[NSUserDefaults standardUserDefaults]; 

获取保存此类设置的快速方法。

【讨论】:

以上是关于moreNavigationController 保存设置的主要内容,如果未能解决你的问题,请参考以下文章

MoreNavigationController 的背景图片

moreNavigationController 保存设置

moreNavigationController 暂时不显示图像

从 UITabBarController 的 moreNavigationController 中移除 rightBarButtonItem

在 UITabBarController 中,moreNavigationController 始终为零

UITabBarController、MoreNavigationController 和设备旋转的圣杯