Подтвердить что ты не робот

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: (

4b9b3361

Ответ 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, Это сработало для меня!