У меня есть модальный контроллер представления, представление которого исходит от XIB. Я хочу, чтобы он выглядел так же, как и остальное мое приложение, основанное на навигации, но это не представление, которое было перенесено в стек навигационной системы, он был представлен модально. Я перетащил UINavigationBar и сделал его выходом, но у него нет свойства title для установки. У меня есть два поля, которые могут отображать это модальное представление, и я хочу, чтобы заголовок задавался по-разному в зависимости от того, какой из них создает модальный вид.
Установите заголовок панели навигации, созданной в Interface Builder
Ответ 1
UINavigationBar
управляет стеком UINavigationItem
, как менеджер UINavigationController
, стек UIViewController
s. Чтобы установить то, что видно непосредственно, вы должны использовать либо pushNavigationItem:animated:
, либо setItems:animated:
, используя navigationItem контроллера вида, на который вы хотите отобразить панель.
например:
self.navigationItem.title = @"A custom title";
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO];
Вышеприведенный код, в котором у вас есть свойство navigationBar
, которое ссылается на автономную панель навигации.
Если вы не хотите самостоятельно управлять им, вы можете сделать так, как предположил mplappert, и вставить контроллер вида (без автономного UINavigationBar
) в UINavigationController
и представить навигационный контроллер вместо вашего представления контроллер.
Ответ 2
Также нашел этот более простой способ, если вы уже определили UINavigationBar в своей IB. Предполагая, что self.navigationBar является вашим IBOutlet:
self.navigationBar.topItem.title = title;
Ответ 3
(с использованием XCode 4.5.2) Найден метод, который работает непосредственно в Interface Builder - без настройки в коде.
В объекте ViewController, выбранном в (IB), под Инспектором удостоверений находится раздел с надписью " Пользовательские атрибуты времени выполнения". Я добавил keypath "title" типа String и установил его в значение, которое я хотел.
Протестировано, и это работает при вводе в стек Nav Controller и при открытии по умолчанию (с помощью Modal Nav Controller, конечно).
Ответ 4
файл viewcontroller.h в создании iboutlet элемента навигации
@property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle;
- назвал его "navigationBarTitle"
в файле viewcontroller.m добавьте код в супер viewDidLoad
self.navigationBarTitle.title = @"Favorites";
подключить рассказчик в пункте навигационной панели к navigationBarTitle.
Ответ 5
в моем .h файле
-
Перетащите ребенка из элемента навигации из раскадровки в файл .h
-
Именовал его "navigationBarTitle"
в моем .m файле
- Добавлен self.navigationBarTitle.title= @ "Некоторое название";
Ответ 6
Вот самый простой способ:
[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"];
Ответ 7
вы можете использовать существующую навигационную панель со следующим кодом
self.navigationController?.navigationBar.topItem?.title = "Calender"
Ответ 8
Просто разместите UIViewController
в новом стеке диспетчера представлений UINavigationController
и представите навигационный контроллер по-разному.