导航控制器内部有3个选项卡,没有工作标题

时间:2011-12-26 17:25:20

标签: iphone ios uinavigationcontroller uitabbarcontroller

我有3个标签和主导航控制器。我使用代码实现:

UIViewController *monitorController   = [[[MonitorController   alloc] initWithNibName:@"MonitorController"   bundle:nil] autorelease];
UIViewController *dashboardController = [[[DashboardController alloc] initWithNibName:@"DashboardController" bundle:nil] autorelease];
UIViewController *settingsController  = [[[SettingsController  alloc] initWithNibName:@"SettingsController"  bundle:nil] autorelease];

self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:monitorController, dashboardController, settingsController, nil];

self.navigationController = [[[UINavigationController alloc] initWithRootViewController:self.tabBarController] autorelease];

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];

我想在选择另一个水龙头时更改导航标题,但没有变体(见下文)不起作用(导航控制器上没有任何标题):

    self.title = DASHBOARD_TITLE; 

    self.navigationController.title = DASHBOARD_TITLE; 

我如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

UINavigationController会显示当前显示的UIViewController的标题,这就是您无法直接设置的原因。 您可以尝试更改title上的UITabBarController,但我不确定导航控制器是否会在屏幕首次出现后更新其标题。

但是,你真的需要那种架构吗? 通常UITabBarControllerroot viewController,如果您需要UINavigationControllers,则需要inside需要具有导航功能的标签。
设计是这样使用的。

  

与其他视图控制器不同,标签栏界面永远不应该作为另一个视图控制器的子项安装。

引自UITabBarController Class Reference

答案 1 :(得分:0)

抱歉,我误解了您的问题,您需要做的是从-tabBar:didSelectItem:协议实施UITabBarDelegate,然后根据按下的标签更改标题。

或者在控制器的ViewWillAppear方法中设置标题,就像你做的那样