以编程方式设置 UITabBarItem 标题?
Posted
技术标签:
【中文标题】以编程方式设置 UITabBarItem 标题?【英文标题】:Set UITabBarItem title programmatically? 【发布时间】:2011-06-15 16:25:48 【问题描述】:我的应用基于标签栏架构。为了有一个简单的国际化机制,我不在 XIB 文件中写任何字符串。 viewdidload 允许以编程方式更改视图中的字符串。
当我的应用启动时,我可以看到 4 个选项卡。但实际上只有第一个加载它的视图控制器。其他等待用户点击加载。 可以使用 [self setTitle:@"Mouhahaha"] 更改选项卡标题;在加载的视图控制器的 viewDidLoad 中。
如果我想保持我的国际化机制可用,我不会在我的 XIB 中设置标签栏项目的名称。但是,因为在开始时所有选项卡的视图控制器都没有加载,所以我有一些选项卡的空白标题。仅当用户单击选项卡时才设置正确的标题。
我正在寻找一种方法来以编程方式为每个 tabbaritem 设置此标题。你有提示吗?
非常感谢。
克洛德
【问题讨论】:
【参考方案1】:我首选的以编程方式与情节提要一起执行此操作的方法是创建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);
【讨论】:
【参考方案2】:您需要做的就是创建一个 UITabBarController 实例,然后在其中分配您想要的任何视图,然后设置 UITabBarController 视图。确保您的 TabBarController 是可见的。还要确保使用#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 的方式,但我不会深入探讨。
希望对你有帮助
【讨论】:
它可以工作,但是仅仅改变一些标签就非常复杂......我猜苹果不希望我们访问 tabbaritem 嗯,与他们所做的其他一些事情相比,这简直是小菜一碟:-) 如果有 NavigationViewController 而不是 ViewController 会怎样。 我明白了:- [navigation1 setTitle:@"Nav 1"];以上是关于以编程方式设置 UITabBarItem 标题?的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 9 中更改 UITabBarItem 色调颜色?