UINavigationBar пользовательский вид заголовка на втором уровне

Я пытался вставить пользовательскую кнопку в центре UINavigationBar (в titleView). Это все еще работает на первом уровне, но когда я выбираю в этом TableView одну ячейку и перемещаюсь к следующему контроллеру, я не могу вставить эту кнопку также на второй контроллер. Показаны Right- и LeftBarButtonItem, но не titleView.

Когда я работаю с настройками по умолчанию и использую viewController.title, он отображается в titleView этой панели навигации, но мой пользовательский вид не отображается.

Мой код в обоих контроллерах

UIButton *centerNavigationButton = [UIButton buttonWithType:UIButtonTypeCustom];
[centerNavigationButton setBackgroundImage:[UIImage imageNamed: @"buttonImage.png"] forState:UIControlStateNormal];

centerNavigationButton.frame = (CGRect) {
  .size.width = 100,
  .size.height = 20,
};
[centerNavigationButton addTarget:self action:@selector(scrollToTop) forControlEvents:UIControlEventTouchUpInside];
[self.navigationController.navigationBar.topItem setTitleView:centerNavigationButton];

Я искал это более одного дня, но нигде не нашел эту проблему для второго уровня.

Спасибо за вашу помощь.


Редактировать:

Решение найдено @Martin R в первом TableViewController, который я должен написать

UIButton *centerNavigationButton = [UIButton buttonWithType:UIButtonTypeCustom];
[centerNavigationButton setBackgroundImage:[UIImage imageNamed: @"buttonImage.png"] forState:UIControlStateNormal];

centerNavigationButton.frame = (CGRect) {
  .size.width = 100,
  .size.height = 20,
};
[centerNavigationButton addTarget:self action:@selector(scrollToTop) forControlEvents:UIControlEventTouchUpInside];
[self.navigationController.navigationBar.topItem setTitleView:centerNavigationButton];

На втором уровне:

UIButton *centerNavigationButton = [UIButton buttonWithType:UIButtonTypeCustom];
[centerNavigationButton setBackgroundImage:[UIImage imageNamed: @"buttonImage.png"] forState:UIControlStateNormal];

centerNavigationButton.frame = (CGRect) {
  .size.width = 100,
  .size.height = 20,
};
[centerNavigationButton addTarget:self action:@selector(scrollToTop) forControlEvents:UIControlEventTouchUpInside];
[self.navigationItem setTitleView:centerNavigationButton];

Вопрос можно закрыть.

Большое спасибо! 25 минут с момента написания вопроса, чтобы найти решение! Прекрасное время!

1 ответ

Решение

Я думаю, что вы должны установить titleView вид контроллера navigationItem:

self.navigationItem.titleView = centerNavigationButton;
Другие вопросы по тегам