Я устанавливаю заголовок своего контроллера просмотра, как это видно, загрузилось:
self.title = @"my title";
до этого я установил заголовок в раскадровках для контроллера представления и контроллера навигации, в который он встроен. Я установил его на: «Заголовок»;
Когда я нажимаю на вкладку, которая содержит контроллер представления, заголовок элемента панели вкладок и uiviewcontroller
меняю на: мой заголовок
Я хотел бы, чтобы контроллер представления изменился, но элемент панели вкладок остался с заголовком: Title
Как я могу этого добиться?
Так что для тех, кто до сих пор этого не понимает (как я)
self.navigationItem.title = @"my title";
устанавливает заголовок панели навигации .self.tabBarItem.title = @"my title";
устанавливает заголовок панели вкладок .self.title = @"my title";
устанавливает оба из них .источник
Swift
Установить заголовок верхней панели
Установить заголовок элемента вкладки
Установите оба заголовка
источник
topItem
?Для Swift используйте это,
источник
Примечание: Если у вас есть контроллер панели вкладок с контроллерами навигации в корне каждого контроллера представления, установка элемента панели вкладок на контроллерах представления не повлияет на заголовок, если вы устанавливаете
navigationItem.title
.tabBarItem
Вместо этого вам нужно будет установить его на контроллер навигации, чтобы его можно было взять с контроллера панели вкладок.Ни один из ответов, опубликованных другими пользователями, не помог мне, потому что все контроллеры представления панели вкладок имеют в своем корне контроллеры навигации - это общий шаблон иерархии для
UITabBarController
.tabBarItem
Вместо этого вы должны установить контроллер навигации, чтобы заголовок отображался иначе, чемnavigationItem
заголовокВы можете создать свои
tabBarItem
и напрямую связать их со своим ВК.Тогда у вас будет что-то вроде этого:
Но это следует изменить на следующее, чтобы захватить уже связанный
tabBarItem
с контроллером представления и автоматически установить его на контроллер навигации.Теперь у вас будет возможность иметь другой заголовок (установленный в вашей VC) отдельно от заголовка, определенного для вашего
tabBarItem
.источник
Довольно поздно. Вы можете использовать TabBarController в качестве UITabBarControllerDelegate и UINavigationControllerDelegate для себя и контроллеров навигации, встроенных в каждую из ваших вкладок соответственно.
.час:
.m:
Основываясь на небольшом быстром тестировании, кажется, что эти два действия делегата должны охватывать любые незакрепленные случаи и обновлять заголовок независимо от того, переключаете ли вы вкладки или просматриваете в своем контроллере навигации. Для полноты вы также можете обновить свой заголовок в didShowViewController , но, судя по тому, что я видел, я не считаю это необходимым.
источник
Возможно, немного поздно (но).
Установка заголовка VC изменяет заголовок навигации И tabBar. (если ВК уже подключен к обоим).
Если вы хотите иметь отдельные заголовки, вам необходимо вручную установить их, вы обычно устанавливаете заголовок для VC, а затем, в частности, заголовок tabBarItem, поскольку это свойство
источник
Swift 4.2
Вот и все, я создал расширение для UIViewController:
А затем с вашего контроллера:
источник