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 Имущество

Использование

self.title = @"yourTitle";

стриж

title = "whateverTitle", Это UIViewController свойство экземпляра; вызывать в любое время.

Из документации:

декларация
var title: String? { get set }

обсуждение
Установите заголовок для удобочитаемой строки, которая описывает представление. Если у контроллера представления есть допустимый элемент навигации или элемент панели вкладок, присвоение значения этому свойству обновляет текст заголовка этих объектов.

Я знаю его старую ветку, но думал об использовании этого метода Set "self.title" в методе "init" в производном классе UIVIewControler. Это сработало для меня!

Другие вопросы по тегам