【问题标题】:Set UITabBarItem title programmatically?以编程方式设置 UITabBarItem 标题?
【发布时间】:2011-06-15 16:25:48
【问题描述】:

我的应用基于标签栏架构。为了有一个简单的国际化机制,我不在 XIB 文件中写任何字符串。 viewdidload 允许以编程方式更改视图中的字符串。

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

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

我正在寻找一种方法来以编程方式为每个 tabbaritem 设置此标题。你有提示吗?

非常感谢。

克洛德

【问题讨论】:

    标签: ios uitabbarcontroller uitabbar viewdidload uitabbaritem


    【解决方案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"];
      猜你喜欢
      • 2020-05-31
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多