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" как title: (
Ответы
Ответ 1
В вашем UIViewController
есть свойство title
, и это свойство будет отображаться NavigationController
. Таким образом, при нажатии новой UIViewController
на стек навигационной системы заголовок этого UIViewController
устанавливается на все, что подходит.
В вашем случае это выглядит так:
[self setTitle:@"WhateverTitle"];
Ответ 2
использовать
self.title = @"yourTitle";
Ответ 3
Для тех, кто ищет решение Swift:
class CustomViewController: SuperViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "My Custom Title"
}
}
title
необходимо установить на UIViewController
, а не на UINavigationController
, встраивая контроллер представления.
Документация: UIViewController
Ссылка на класс: title
Свойство
Ответ 4
Swift
title = "whateverTitle"
. Это свойство экземпляра UIViewController
; вызывать в любое время.
Из documentation:
Декларация
var title: String? { get set }
Обсуждение
Установите заголовок на удобочитаемую строку, описывающую представление. Если в контроллере представления есть действительный элемент навигации или элемент табуляции, присвоение значения этому свойству обновляет текст заголовка этих объектов.
Ответ 5
Я знаю его старую нить, но думал поделиться этим
Установите "self.title" в методе "init" в производном классе UIVIewControler,
Это сработало для меня!