self.tabBarItem.title не работает? - PullRequest
12 голосов
/ 05 апреля 2009

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

  • В Интерфейсном Разработчике установите заголовок элемента вкладки на «Создать новый»
  • В контроллере UINavigation у меня self.tabBarItem.title = 'Create New'; и self.title = 'Create New';
  • В UIViewController, помещенном в контроллер: self.tabBarItem.title = 'Create New'; но self.title = 'Blah';.

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

Ответы [ 2 ]

24 голосов
/ 06 апреля 2009

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

17 голосов
/ 04 февраля 2011

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

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

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

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

  1. 'tab1 View'
  2. 'второй'
  3. 'третий'

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

Решение

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

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

...