独立于TabBar标题设置NavController标题

时间:2011-09-27 14:06:17

标签: iphone uinavigationcontroller

我正在通过编程方式构建视图控制器及其相关导航控制器的相当典型的过程,然后将导航控制器添加到tabBarController。

self.tabBarController = [[[UITabBarController alloc] init] autorelease];
[self.tabBarController setHidesBottomBarWhenPushed: YES];

FirstViewController * firstView = [[[FirstViewController alloc] init] autorelease];
firstView.title = @"First";
firstView.tabBarItem.image = [UIImage imageNamed:@"icon_first_view.png"];
UINavigationController * firstViewNav = [[[UINavigationController alloc] initWithRootViewController:firstView] autorelease];

[tabBarController setViewControllers:[NSArray arrayWithObjects: firstViewNav, nil]];

工作正常,NavigationController标题和TabBar标题会说“First”。现在,我想将导航控制器标题更改为“FooBar”,并将标签栏标题保留为“First”。

我试过了:

firstViewNav.navigationItem.title = @"FooBar";

但这似乎并未改变它。如果我在这个导航控制器管理的实际ViewController上更改标题(firstView.title),那么TabBar标题和导航栏标题都会改变,这是不希望的。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

在这里回答:self.title sets navigationController and tabBarItem's title? Why?

self.title = @"Title for TabBarItem"; // TabBarItem.title inherits the viewController's self.title
self.navigationItem.title = @"Title for NavigationBar";

答案 1 :(得分:0)

将选项卡栏项添加到导航控制器,并将TabBarItem的标题设置为您希望选项卡栏标签读取的内容。我通常在NIB中执行此操作,但如果以编程方式执行此操作,它应该可以正常工作。

将导航项的标题设置为导航栏文本中的所需内容。您也可以在视图出现时更改此文本,例如,如果您想要更改它。

如您所见,请勿设置视图控制器的标题,因为这将覆盖其他两个值。

答案 2 :(得分:-1)

只需隐藏NavigationBar并添加一个包含所需标题的工具栏。