13

在我的 iPhone 应用程序中,我有一个标签栏。此选项卡栏包含一个 UINavigationController。我有:

  • 在 Interface Builder 中,将选项卡项标题设置为“新建”
  • 在 UINavigation 控制器中,我拥有self.tabBarItem.title = 'Create New';self.title = 'Create New';
  • 在 UIViewController 推到控制器上: self.tabBarItem.title = 'Create New'; 但是self.title = 'Blah';

但是,总是会显示推到导航控制器上的第一个视图控制器的 self.title (Blah)。您将如何设置标签栏项目的标题?谢谢,艾萨克·沃勒

4

2 回答 2

25

我发现如果我使用self.navigationItem.title = 'Blah';而不是self.title,它会起作用。

于 2009-04-06T19:47:18.997 回答
18

我刚刚解决了同样的问题。我self.tabBarItem.item用于我的第一个选项卡tabBarController,这是第一个也是唯一一个加载它的navigationController. 因此,对于标签栏中的第一个标签,您必须以不同的方式设置标题。我将尝试说明:

带有 3 个选项卡的选项卡栏UINavigationController每个选项卡提供内容)

  1. 标签 1
    • 加载 tab1NavController.m(设置self.tabBarItem.item为 '1st')
    • 加载 tab1ViewController.m(设置self.title为 'tab1 View'
  2. 标签 2
    • 加载 tab2NavController.m(设置self.tabBarItem.item为 '2nd')
    • 加载 tab2ViewController.m(设置self.title为“选项卡视图”
  3. 标签 3
    • 加载 tab3NavController.m(设置self.tabBarItem.item为 '3rd')
    • 加载 tab3ViewController.m(设置self.title为 'tab3 View'

当标签栏viewControllers为 3 个标签中的每一个加载所有标签时,标签栏中的标签按钮具有以下标签:

  1. 'tab1 视图'
  2. '第二'
  3. '第三'

这是因为在用户选择这些选项卡之前,不会加载第二个和第三个导航控制器。第一个选项卡在加载时UITabBarController加载,并且由于事件的顺序,它用tabBarItem.titlenavController 的 rootViewController替换了self.title

解决方案

要解决此问题,您只需使用self.navigationItem.title而不是self.title. 您只需为第一个选项卡的 navController 的 rootViewController 执行此操作。

我希望这是有道理的。您确实解决了自己的问题,但我希望您和其他任何人都知道为什么它会这样工作。

于 2011-02-04T00:45:21.850 回答