我有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;
我如何解决这个问题?
答案 0 :(得分:2)
UINavigationController
会显示当前显示的UIViewController
的标题,这就是您无法直接设置的原因。
您可以尝试更改title
上的UITabBarController
,但我不确定导航控制器是否会在屏幕首次出现后更新其标题。
但是,你真的需要那种架构吗?
通常UITabBarController
是root viewController
,如果您需要UINavigationControllers
,则需要inside
需要具有导航功能的标签。
设计是这样使用的。
与其他视图控制器不同,标签栏界面永远不应该作为另一个视图控制器的子项安装。
答案 1 :(得分:0)
抱歉,我误解了您的问题,您需要做的是从-tabBar:didSelectItem:
协议实施UITabBarDelegate
,然后根据按下的标签更改标题。
或者在控制器的ViewWillAppear方法中设置标题,就像你做的那样