以编程方式设置 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 标题?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改标准 UITabBarItem 上的文本“更多”

本机 UITabBarItem 上使用的字体设置是啥

iPhone:无法从 uitabbaritem 读取徽章值

在 iOS 9 中更改 UITabBarItem 色调颜色?

在 iOS 7 中无法显示 UITabBarItem.image 正确大小

iOS 11 中的横向 UITabBar 中的 UITabBarItem