我的应用基于标签栏架构。为了拥有一个简单的国际化机制,我不在XIB文件中写任何字符串。 viewdidload允许以编程方式更改视图中的字符串。
当我的应用启动时,我可以看到4个标签。但事实上只有第一个加载其视图控制器。其他人等待用户点击加载。 可以使用[self setTitle:@“Mouhahaha”]更改标签标题;在加载视图控制器的viewDidLoad中。
如果我想保持我的国际化机制,我不会在我的XIB中设置tabbar项的名称。但是,在开始时所有选项卡的视图控制器都没有加载,我有一些标签的空白标题。仅当用户单击选项卡时才设置右侧标题。
我正在寻找一种方法来为每个tabbaritem设置这个标题。你有提示吗?
非常感谢。
kheraud
答案 0 :(得分:3)
我首选的方法是与故事板一起以编程方式创建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);
}
答案 1 :(得分:1)
您需要做的就是创建一个UITabBarController实例,然后在其中分配您想要的任何视图,然后设置UITabBarController视图。确保您的TabBarController是可见的。还要确保使用#import
导入标签栏中所需的任何viewControllers。
UITabBarController *c = [self tabBarController];
SecondViewController *s = [[SecondViewController alloc] init];
[s setTitle:@"Whatever"];
c.viewControllers = [NSArray arrayWithObjects:self, s, nil];
[s release];
将它放在分配的第一个控制器的viewDidLoad方法中。
或者你可以改变你的ApplicationDelegate设置TabBarController的方式,但我不会进入那个。
希望这有帮助