Почему не работает функция navigationItem.titleView?

Я хотел бы добавить UIButton в центр навигационной панели. Основываясь на документе, мне кажется, мне нужно установить вид заголовка и убедиться, что значение leftBarButtonItem равно нулю. Но это не работает для меня. Вот код.

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setTitle:@"List" forState:UIControlStateNormal];
self.navigationItem.leftBarButtonItem = nil;
[self.navigationItem.titleView addSubview:btn];

Ответ 1

Если вы исследуете свою кнопку, вы обнаружите, что с помощью метода удобства для ее инициализации вы остаетесь с помощью кнопки 0x0, которая позиционируется в 0,0 в пределах видимости, к которой она добавляется. Прежде чем это сделать, вы должны определить содержимое свойства frame кнопки. См. Код ниже:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 400, kCustomButtonHeight);
[btn setTitle:@"list" forState:UIControlStateNormal];
self.navigationItem.titleView = btn;

Ответ 2

В представлении элемента navigationItem по умолчанию установлено значение nil.

Вам нужно использовать

self.navigationItem.titleView = btn;

Ответ 3

В моем случае я пытался установить его в контроллере дочернего представления, это зафиксировало его

self.parentViewController.navigationItem.titleView = titleView;