Self.tabBarItem.title не работает?

В моем приложении iPhone у меня есть панель вкладок. Эта панель вкладок содержит UINavigationController. У меня есть:

  • В Interface Builder задайте заголовок элемента вкладки "Создать новый"
  • В контроллере UINavigation у меня есть self.tabBarItem.title = 'Create New'; и self.title = 'Create New';
  • В UIViewController нажимается на контроллер: self.tabBarItem.title= 'Создать новый'; но self.title = 'Blah';.

Но, всегда, отображается self.title первого контроллера представления, нажатого на навигационный контроллер (Blah). Как бы вы установили заголовок элемента панели вкладок? Благодаря, Исаак Уоллер

Ответ 1

Я нашел, если бы использовал self.navigationItem.title = 'Blah'; вместо self.title, это сработало бы.

Ответ 2

Я просто решил ту же проблему. Я использовал self.tabBarItem.item для первой вкладки моего tabBarController, которая является первой и единственной, загружающей ее navigationController. Итак, для первой вкладки в панели вкладок вы должны установить заголовок по-разному. Я попытаюсь проиллюстрировать:

панель вкладок с 3 вкладками (a UINavigationController предоставляет содержимое каждой вкладки)

  • вкладка 1
    • загружает tab1NavController.m(устанавливает self.tabBarItem.item в '1st')
    • загружает tab1ViewController.m(устанавливает self.title в 'tab1 View'
  • вкладка 2
    • загружает tab2NavController.m(устанавливает self.tabBarItem.item в '2nd')
    • загружает tab2ViewController.m(устанавливает self.title в 'tab View'
  • вкладка 3
    • загружает tab3NavController.m(устанавливает self.tabBarItem.item в '3rd')
    • загружает tab3ViewController.m(устанавливает self.title в 'tab3 View'

Когда панель вкладок загружает все ее viewControllers для каждой из трех вкладок, кнопки вкладок на панели вкладок имеют следующие метки:

  • 'tab1 View'
  • 'второй'
  • 'третий'

Это связано с тем, что 2-й и 3-й навигационные контроллеры не загружаются, пока пользователь не выберет эти вкладки. Первая вкладка загружается, когда загружается UITabBarController и из-за порядка событий она заменяет tabBarItem.title на rootController rootController self.title.

Решение

Чтобы исправить это, вы просто используете self.navigationItem.title вместо self.title. Вы ТОЛЬКО должны сделать это для первой вкладки rootController rootViewController.

Надеюсь, это имеет смысл. Вы решили свою проблему, но я хотел, чтобы вы и кто-то еще знали, ПОЧЕМУ, что это работает так.