Установите заголовок панели навигации, созданной в Интерфейсном Разработчике - PullRequest
51 голосов
/ 12 января 2011

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

Ответы [ 8 ]

90 голосов
/ 12 января 2011

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

например:

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

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

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

64 голосов
/ 20 сентября 2011

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

self.navigationBar.topItem.title = title;
8 голосов
/ 30 ноября 2012

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

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

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

4 голосов
/ 19 мая 2014

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

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

- Названо это "navigationBarTitle"

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

      self.navigationBarTitle.title = @"Favorites";

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

0 голосов
/ 31 декабря 2016

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

self.navigationController?.navigationBar.topItem?.title = "Calender"
0 голосов
/ 15 апреля 2016

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

[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"];
0 голосов
/ 28 июня 2013

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

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

  • Именовал его "navigationBarTitle "

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

  • Добавлено self.navigationBarTitle.title = @" Some Title ";
0 голосов
/ 12 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...