Xcode: загрузка заголовков TabBarItem после заказа - PullRequest
0 голосов
/ 25 сентября 2011

Я использую этот [ учебник ], чтобы сохранить пользовательский заказ TabBarItems, так как мое приложение имеет более 5 вкладок

Концепция учебника заключается в сохранении заголовков TabBarItem в NSUserDefault изагрузите их в следующий раз, когда откроется приложение.

Это прекрасно работает для английского языка, так как мои заголовки TabBarItem изначально установлены в файле XIB

Но проблема в том, что когда загружается другой язык моего приложения,так как заголовки TabBarItem изменяются на выбранный язык при запуске приложения

Таким образом, когда заголовки сохраняются после переупорядочения TabBarItems для языка, который отличается от заголовков, установленных в файле XIB, TabBarItem незагрузился вообще в следующий раз приложение запустилось!Я думаю, что учебник, который я использовал, работает только для заголовков TabBarItem, когда они идентичны заголовкам TabBarItem, определенным в файле XIB, а не тогда, когда эти заголовки TabBarItem были изменены программно в зависимости от языка приложения!

- (void)applicationWillTerminate:(UIApplication *)application {
  NSMutableArray *savedOrder = [NSMutableArray arrayWithCapacity:tabController.viewControllers.count];
  NSArray *tabOrderToSave = tabController.viewControllers;
  for (UIViewController *aViewController in tabOrderToSave) {
    [savedOrder addObject:aViewController.tabBarItem.title];
  }
  [[NSUserDefaults standardUserDefaults] setObject:savedOrder forKey:@"savedTabOrder"];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [self setTabOrderIfSaved];
}

- (void)setTabOrderIfSaved {
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  NSArray *savedOrder = [defaults arrayForKey:@"savedTabOrder"];
  NSMutableArray *orderedTabs = [NSMutableArray arrayWithCapacity:tabController.viewControllers.count];
  if ([savedOrder count] > 0 ) {
    for (int i = 0; i < [savedOrder count]; i++) {
      for (UIViewController *aController in tabController.viewControllers) {
        if ([aController.tabBarItem.title isEqualToString:[savedOrder objectAtIndex:i]]) {
          aController.tabBarItem.title = NSLocalizedString(aController.tabBarItem.title, nil);
          [orderedTabs addObject:aController];
          }
        }
     }
     tabController.viewControllers = orderedTabs;
  }
}

1 Ответ

1 голос
/ 08 ноября 2011

Попробуйте вместо этого использовать свойство тега tabBarItem.

aController.tabBarItem.tag
...