Установите заголовок панели навигации, созданной в Интерфейсном Разработчике

У меня есть модальный контроллер представления, представление которого происходит из XIB. Я хочу, чтобы он имел такой же внешний вид, как и остальная часть моего приложения на основе навигации, но это не представление, которое помещается в стек навигации, оно представлено модально. Я перетащил UINavigationBar и сделал его выходом, но у него нет свойства title, которое нужно установить. У меня есть два поля, которые могут вызвать это модальное представление, и я хочу, чтобы заголовок устанавливался по-разному, в зависимости от того, какое из них создает модальное представление.


person Steve    schedule 12.01.2011    source источник


Ответы (8)


UINavigationBar управляет стеком из UINavigationItem так же, как UINavigationController менеджер стеком из UIViewController. Чтобы установить то, что видно напрямую, вы должны использовать pushNavigationItem:animated: или setItems:animated:, используя navigationItem контроллера представления, который вы хотите отразить на панели.

eg:

self.navigationItem.title = @"A custom title";
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO];

В приведенном выше коде есть свойство navigationBar, которое ссылается на автономную панель навигации.

Если вы не хотите управлять им самостоятельно, вы можете сделать так, как предлагает mplappert, и вложить свой контроллер представления (без автономного UINavigationBar) в UINavigationController и представить контроллер навигации модально вместо контроллера представления.

person codelark    schedule 12.01.2011

Также нашел этот более простой способ, если вы уже определили UINavigationBar в своем IB. Предполагая, что self.navigationBar - это ваш IBOutlet:

self.navigationBar.topItem.title = title;
person typeoneerror    schedule 19.09.2011
comment
в моем случае: self.navigationController.navigationBar.topItem.title = @title - person Matias Elorriaga; 14.07.2015

(Используя XCode 4.5.2) Нашел метод, который работает непосредственно в Интерфейсном Разработчике - без настройки в коде.

Когда объект ViewController выбран в (IB), в Инспекторе удостоверений есть раздел с надписью «Пользовательские атрибуты времени выполнения». Я добавил keyPath «title» типа String и установил для него желаемое значение.

Протестировано, и это работает при помещении в стек контроллера навигации и при модальном открытии (конечно, с помощью модального контроллера навигации).

person user1864957    schedule 30.11.2012
comment
Как локализовать это значение? - person Arvis; 08.12.2016

файл viewcontroller.h в создании iboutlet элемента навигации

     @property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle;

- Назвал его "navigationBarTitle".

в файле viewcontroller.m добавьте код в super viewDidLoad

      self.navigationBarTitle.title = @"Favorites";

подключите раскадровку в элементе панели навигации к navigationBarTitle.

person yogesh yadav    schedule 19.05.2014

в моем файле .h

  • Перетащил дочерний элемент элемента навигации из раскадровки в файл .h

  • Он назвал его "navigationBarTitle".

в моем файле .m

  • Добавлен self.navigationBarTitle.title = @ "Some Title";
person Devine Linvega    schedule 28.06.2013

Вот самый простой способ:

[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"];
person Jouhar    schedule 15.04.2016

вы можете использовать существующую панель навигации со следующим кодом

self.navigationController?.navigationBar.topItem?.title = "Calender"
person ShaileshAher    schedule 31.12.2016

Просто поместите свой UIViewController в новый стек контроллера представления UINavigationControllers и представьте этот контроллер навигации модально.

person mplappert    schedule 12.01.2011