UINavigationController как установить заголовок
У меня есть Controller/View для общего списка элементов, который может быть расширен для отображения настраиваемого списка. Список и навигация работают нормально... но я не могу изменить заголовок UINavigationController. В универсальном контроллере:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view addSubview: navigationController.view];
}
- (void)setNavigationTitle: (NSString *)title
{
NSLog(@"set title: %@", title); // this works
self.navigationController.title = title; // Nothing works here
}
Затем расширенный класс делает..
- (void)viewDidLoad
{
[super viewDidLoad];
[self setNavigationTitle: @"Custom list"];
}
Панель навигации все еще имеет "Item" в качестве заголовка:(
5 ответов
В вашем UIViewController
E сть title
свойство, и именно это свойство будет отображаться NavigationController
, Так что при нажатии на новый UIViewController
на стек навигации установите название этого UIViewController
к тому, что подходит.
В вашем случае это выглядит так:
[self setTitle:@"WhateverTitle"];
Для тех, кто ищет решение Swift:
class CustomViewController: SuperViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "My Custom Title"
}
}
title
должен быть установлен на UIViewController
а не на UINavigationController
встраивание контроллера представления.
Документация: UIViewController
Ссылка на класс: title
Имущество
стриж
title = "whateverTitle"
, Это UIViewController
свойство экземпляра; вызывать в любое время.
Из документации:
декларация
var title: String? { get set }
обсуждение
Установите заголовок для удобочитаемой строки, которая описывает представление. Если у контроллера представления есть допустимый элемент навигации или элемент панели вкладок, присвоение значения этому свойству обновляет текст заголовка этих объектов.
Я знаю его старую ветку, но думал об использовании этого метода Set "self.title" в методе "init" в производном классе UIVIewControler. Это сработало для меня!