Заголовки при использовании NavigationController внутри TabBarController - PullRequest
2 голосов
/ 22 июля 2011

В настоящее время я изучаю разработку для iOS, и меня смущает, как названия устанавливаются внутри.

У меня есть следующий код в оконном шаблоне для iPad, и я делаю все с нуля без Interface Builder:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UISplitViewController *svc = [[UISplitViewController alloc] init];

UINavigationController *leftNav = [[UINavigationController alloc] init];
UIViewController *leftView = [[LeftViewController alloc] init];

[leftNav pushViewController:leftView animated:NO]; 
[leftView release];

UINavigationController *rightNav = [[UINavigationController alloc] init];
UIViewController *rightView = [[RightViewController alloc] init];
[rightNav pushViewController:rightView animated:NO];
[rightView release];

UITabBarController *tbc = [[UITabBarController alloc] init];
tbc.viewControllers = [NSArray arrayWithObjects:leftNav, nil];
[leftNav release];

svc.viewControllers = [NSArray arrayWithObjects:tbc, rightNav, nil];
[tbc release]; [rightNav release];

self.window.rootViewController = svc;
[self.window makeKeyAndVisible];
return YES;
}

Я хочу иметь собственный короткий заголовок для TabBarItem для LeftViewController и длинный заголовок для панели NavigationController сверху. После нескольких попыток я заметил, что на самом деле работает следующее (код взят из LeftViewController: viewDidLoad):

self.title = @"Long title for navigation controller";
self.navigationController.title = @"Short title";

Тем не менее, я понятия не имею, почему установка navigationController.title устанавливает заголовок для TabBarItem. Вместо этого я попробовал "self.tabBarItem.title = @" Short title ", и он не работает, что еще более странно.

Может кто-нибудь объяснить, почему это работает, и как я могу установить заголовки напрямую и правильно, потому что это действительно не подходит мне, и я чувствую, что упускаю что-то важное. Спасибо! :)

1 Ответ

4 голосов
/ 22 июля 2011

Apple сделала title для tabBarItems и NavigationControllers одинаковыми. Это потому, что большинство людей используют эту моду, и это экономит время разработчиков.

Что вы можете сделать, это создать свою собственную панель навигации в качестве выхода для этого представления и изменить его название (вы можете сделать это в конструкторе интерфейса, если вы его используете) ... или просто установить в viewDidLoad метод.

self.yourNavigationBar.topItem.title = @"My New Title";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...