Контроллер навигации с 3 вкладками внутри и без рабочего названия - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть 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 ]

2 голосов
/ 26 декабря 2011

UINavigationController будет отображать заголовок UIViewController, который отображается в данный момент, поэтому вы не можете установить его напрямую.
Вы можете попытаться изменить title на UITabBarController,но я не уверен, что контроллер навигации обновит свой заголовок после того, как он впервые появился на экране.

Но , вам действительно нужна эта архитектура?
Обычно UITabBarController - это root viewController, а если вам нужно UINavigationControllers, то они располагаются inside вкладка,необходимо иметь возможность навигации.
Это было разработано для использования таким образом.

В отличие от других контроллеров представления, интерфейс панели вкладок никогда не должен устанавливаться как дочерний элемент другого контроллера представления.

Цитируется из UITabBarController Справочник по классам

0 голосов
/ 26 декабря 2011

Извините, я неправильно прочитал ваш вопрос. Вам нужно реализовать протокол -tabBar:didSelectItem: из UITabBarDelegate, а затем изменить заголовок в соответствии с нажатой вкладкой.

Или в методе ViewWillAppear вашегоконтроллеры устанавливают заголовок так, как вы это делали

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...