Self.title vs self.navigationItem.title
Какова цель свойства title
UIViewController, не может ли заголовок уже быть установлен с помощью navigationItem.title
?
Оба, похоже, работают, мне просто интересно, почему существует эта, казалось бы, дублированная функциональность.
Ответы
Ответ 1
Заголовок контроллера представления - это соглашение и удобство для вас как программиста. Вызов...
self.title = @"Some Title";
или
[self setTitle:@"Some Title"];
гарантирует, что любой объект (например, панель навигации), который должен получить заголовок вашего контроллера представления, может это сделать. Использование navigationItem.title позволит вам перетащить этот заголовок по мере необходимости, но может быть более "стильным", чтобы вместо этого назначить заголовок вашего контроллера.
ИМО вы можете сделать, но первая сохранит вам некоторую типизацию; -)
Cheers -
Ответ 2
В UIViewController название и navigationItem.title отличаются. Один пример: если у вас есть контроллер просмотра (в NavigationController) в UITabBarController, то, если вы установите self.title, он переопределяет имя вкладки, а также верхний заголовок. Если вы установите self.navigationItem.title, тогда он изменит только верхний заголовок, оставив имя панели табуляции неизменным.
Ответ 3
Когда вы устанавливаете navigationItem.title
, вы устанавливаете заголовок панели навигации в верхней части представления. Это важно, когда вы нажимаете новый контроллер просмотра, потому что заголовок предыдущего представления (установленный navigationItem.title
) будет текстом кнопки "Назад". Кроме того, если в вашем проекте нет панели навигации, navigationItem.title
не будет работать.
Apple дает следующее описание для свойства title
UIViewController.
Локализованная строка, представляющая представление, управляемое этим контроллером.
Ответ 4
UIViewController имеет свойство title. в navigationItem и tabBarItem оба переопределяют свойство title. поэтому, если у нас есть приложение с tabbar и navigationcontroller. И установка self.title= @ "somethng" установит этот заголовок как для navigationTitle, так и для tabBartitle.