2015-04-07 6 views
0

Я меняю название UITabBarItem после того, как пользователь изменит свои языковые предпочтения в настройках приложения. Проблема в том, что весь элемент исчезает некоторое время после этого изменения, а затем снова появляется с новым заголовком.Динамическая перезагрузка UIViewControllers при изменении языка

В AppDelegate Я инициализация UITabBarController:

self.tabBarController = [[UITabBarController alloc] init]; 
self.tabBarController.delegate = self; 

BFNCategoriesTableViewController *shopViewController = [[BFNCategoriesTableViewController alloc] init]; 
UINavigationController *shopNavigationController = [[UINavigationController alloc] initWithRootViewController:shopViewController]; 
shopNavigationController.tabBarItem = [[UITabBarItem alloc] initWithTitle:BFNLocalizedString(kTranslationShop) image:[UIImage imageNamed:@"TabBarShopUnselected"] selectedImage:[UIImage imageNamed:@"TabBarShopSelected"]]; 

self.tabBarController.viewControllers = @[offersNavigationController, 
             shopNavigationController, 
             //wishlistNavigationController, 
             cartNavigationController, 
             moreNavigationController]; 

Затем после перевода загружается я просто установить другое название, как это:

navigationController.title = BFNLocalizedString(kTranslationCart); 

У вас есть представление о том, почему это происходит, и в конце концов, как оговорить эту проблему?

Спасибо.

ответ

0

Во-первых, я не могу понять, касающийся кода выше, как tabBarController связан с UINavigationController.

Вы должны

self.tabBarController.viewControllers = [NSArray arrayWithObject: shopViewController]; 
UINavigationController *shopNavigationController = [[UINavigationController alloc] initWithRootViewController: self.tabBarController ]; 

UINavigationController не обладает свойством является tabBarItem.

После этого:

shopViewController.title = = BFNLocalizedString(kTranslationCart); 

Это меняет название на вершине NavController и название TabBar, а также.

Другой способ, он может напрямую изменить tabBarTitle.

UITabBar *tabBar = self.tabBarController.tabBar; 
UITabBarItem * itemBar = [ [UITabBarItem alloc] initWithTitle:BFNLocalizedString(kTranslationCart) 
        image:(UIImage *)image // your image 
      selectedImage:(UIImage *)selectedImage]; // highlighted image 
[tabBar setItems:[NSArray arrayWithObject:itemBar 
    animated:YES ]; 

Я думаю, что первый способ достаточно, он обязательно должен работать.

+0

Я ценю ваш ответ. Я редактировал свой оригинальный вопрос, чтобы понять, как tabBarController связан с UINavigationController. На самом деле UINavigationController имеет свойство tabBarItem, и вышеупомянутая реализация работает. Проблема в том, что после изменения заголовка, как я упоминал в исходном сообщении (что совпадает с вашими предложениями), tabBarItem исчезает в течение нескольких секунд. Другое решение, которое вы предложили, не работает, потому что «Неправильная модификация панели вкладок, управляемой контроллером панели вкладок, не допускается» – skornos