用户在应用设置中更改语言首选项后,我正在更改UITabBarItem标题。问题是整个项目在进行此更改后会消失一段时间,然后再次显示新标题。
在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 :(得分: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 ];
我认为第一种方式就足够了它必定会有效。