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

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

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

如何让用户保存此设置?

【问题讨论】:

    标签: iphone sdk save tabbar navigationcontroller


    【解决方案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]; 
      

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

      【讨论】:

        猜你喜欢
        • 2013-07-01
        • 2013-04-28
        • 1970-01-01
        • 1970-01-01
        • 2011-05-12
        • 2014-09-01
        • 2014-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多