Я только что решил ту же проблему. Я использовал 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
на «просмотр вкладок»
- вкладка 3
- загружает tab3NavController.m (устанавливает
self.tabBarItem.item
в '3rd')
- загружает tab3ViewController.m (устанавливает
self.title
на «tab3 View»
Когда панель вкладок загружает все свои viewControllers
для каждой из 3 вкладок, кнопки вкладок на панели вкладок имеют следующие метки:
- 'tab1 View'
- 'второй'
- 'третий'
Это потому, что 2-й и 3-й навигационные контроллеры не загружаются, пока пользователь не выберет эти вкладки. Первая вкладка загружается, когда загружается UITabBarController
, и из-за порядка событий она заменяет tabBarItem.title
на rootViewController navController self.title
.
Решение
Чтобы это исправить, вы просто используете self.navigationItem.title
вместо self.title
. Вы должны сделать это ТОЛЬКО для rootViewController navController 1-й вкладки.
Надеюсь, это имеет смысл. Вы решили свою собственную проблему, но я хотел, чтобы вы и все остальные знали, ПОЧЕМУ это работает так.