UINavigationBar - Установить заголовок программно?

У меня есть приложение панели вкладок с различным представлением на каждой вкладке. Каждое представление имеет UINavigationBar с заголовком, установленным в Интерфейсном Разработчике. Я хочу изменить заголовок на основе предложения в методе ViewDidLoad, поэтому, если x {изменить заголовок}.

Я пробовал self.title= @"title", но это меняет заголовок самого элемента панели вкладок.

Итак, как это сделать?

Ответ 1

Я установил заголовок программно, используя код примерно так:

navBar.topItem.title = @"title";

где navBar объявлен как IBOutlet UINavigationBar, связанный с панелью навигации в построителе интерфейса. Это работало в моем приложении; однако я не использовал панель вкладок.

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

Ответ 2

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

self.navigationItem.title = @"the title";

поскольку установка navBar.topItem.title не будет работать при любых обстоятельствах.

Ответ 3

Используйте это:

    CGRect navBarFrame = CGRectMake(0, 0, self.tableView.frame.size.width, 44.0);
    UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:navBarFrame];

    UINavigationItem *navItem = [UINavigationItem alloc];
    navItem.title = @"Your Title";

    [navBar pushNavigationItem:navItem animated:false];

[self.view addSubView:navBar]; 

или

self.tableView.tableHeaderView = navBar; etc

Ответ 4

Если класс является типом UIViewController, вы можете установить заголовок как заданный в методе viewDidLoad.

    [self setTitle:@"My Title"];

Ответ 5

В ViewDidLoad вашего ViewController.m просто напишите

[email protected]"Hello World";

Вот результат:

enter image description here

Ответ 6

Создать IBOutlet из UINavigationBar

navigationBar.topItem.title = @"Title";

Надеюсь, что это поможет.

Ответ 7

Я использовал следующее:

self.navigationController.navigationBar.topItem.title = @"Title";

Однако мне также пришлось вызвать его в блоке отправки, так как он не изменит название при вызове в viewDidLoad без него.

Ответ 8

Обратите внимание, что для того, чтобы заголовок отображался во ВСЕ, делегат диспетчера навигации ДОЛЖЕН быть установлен на панель навигации или заголовок НИКОГДА не будет отображаться!

Ответ 9

Вы также можете просто установить заголовок в ViewDidLoad под вашим ViewController или TableViewController, используя

_title = @"Title";

или

self.title = @"Title";

Ответ 10

Попробуйте это,

self.navigationItem.title = @"Your title";

Ответ 11

Я добился этого в Swift 5

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = "Title"
}