Как заставить навигационную панель показывать большой заголовок при переходе назад? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть приложение панели вкладок, где одним из представлений является UITableViewController, содержащий статические ячейки в виде содержимого с 1 разделом и 1 строкой.

Chat View

Я хочу, чтобы Большой заголовок был установлен на «Всегда», поэтому я сделал выбор на раскадровке, и заголовок был большим на симуляторе,Теперь, когда пользователь нажимает «Начать чат», приложение переходит к контроллеру представления Virtual Assistant, где для большого заголовка на раскадровке установлено значение «Никогда».Теперь проблема в том, что когда пользователь переходит обратно к предыдущему контроллеру представления с ячейкой табличного представления «Начать чат», заголовок больше не является большим.

Интересно, что когда я устанавливаю табличное представление какпрокручиваемый, заголовок снова становится большим после перетаскивания вниз представления таблицы.Я удостоверился, что панель навигации на раскадровке Навигационного контроллера отмечена надписью «Предпочитает большие заголовки».Я использую Xcode 11, и это не было проблемой при использовании Xcode 10.

Я попытался создать пользовательский класс для представления с помощью кнопки запуска чата, и этот код не работал при увеличении заголовка изперейти назад:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.navigationItem.largeTitleDisplayMode = .always
    navigationController?.navigationBar.prefersLargeTitles = true

Что еще я мог сделать?Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Я бы использовал willMove(toParent:), чтобы изменить заголовок, прежде чем будет выполнена передача.

override func willMove(toParent parent: UIViewController?) {
    navigationController?.navigationItem.largeTitleDisplayMode = .always
    navigationController?.navigationBar.prefersLargeTitles = true
}
0 голосов
/ 23 сентября 2019

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

navigationController?.navigationItem.prompt = ""

navigationController?.navigationItem.prompt = nil

Я принял этот обходной путь от этот вопрос .

В вашемВ конкретном случае было бы лучше создать подкласс навигационного контроллера и установить эти свойства в его методе viewDidLoad, поэтому его свойства (largeTitleDisplayMode и prefersLargeTitles) задаются в автономном коде.

...