以编程方式设置UITabBarItem标题?

我的应用程序基于标签栏体系结构。 为了有一个简单的国际化机制,我不写在XIB文件中的任何string。 viewdidload允许改变视图中string的程序。

当我的应用程序启动时,我可以看到4个选项卡。 但实际上只有第一个加载它的视图控制器。 其他人等待用户点击被加载。 标签标题可以使用[self setTitle:@“Mouhahaha”]; 在viewDidLoad中加载视图控制器。

如果我想保持我的国际化机制可用,我不会在我的XIB中设置tabbar项目的名称。 但是,在开始时,所有标签的视图控制器没有加载,我有一些标签的空白标题。 只有当用户点击选项卡时才会设置正确的标题。

我正在寻找一种方法来为每个tabbaritem设置这个标题programaticaly。 你有提示吗?

非常感谢。

kheraud

所有你需要做的就是做一个UITabBarController的实例,然后分配你想要的任何视图,然后设置UITabBarController视图。 确保您的TabBarController是可见的。 还要确保你想要在你的标签栏中的任何viewControllers正在导入#import

 UITabBarController *c = [self tabBarController]; SecondViewController *s = [[SecondViewController alloc] init]; [s setTitle:@"Whatever"]; c.viewControllers = [NSArray arrayWithObjects:self, s, nil]; [s release]; 

把它放在分配的第一个控制器的viewDidLoad方法中。

或者,你可以改变你的ApplicationDelegate设置TabBarController的方式,但我不会去。

希望这可以帮助

我的首选方法是与故事板一起编程,并创build一个UITabBarController的子类,让我的故事板中的标签栏控制器场景使用新的子类(3个UIViewController关系从标签栏控制器到所需的视图控制器下面),然后覆盖viewWillAppear:

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; NSArray* titleKeys = [NSArray arrayWithObjects:@"top places", @"localizablekey1", @"localizablekey2", @"localizablekey3", nil]; [super viewWillAppear:animated]; int count = 0; for (UIViewController* viewController in self.viewControllers) viewController.tabBarItem.title = NSLocalizedString([titleKeys objectAtIndex:count++], nil); }