Великий перемикач заголовка на малі заголовки на панелі навігації не є рівним iOS 13, липкий


11

У мене є UINavigationControllerзначення за замовчуванням це navigationBar.prefersLargeTitles = true.

Я перемикаю це на те, falseколи я push вступаю в нову сцену, дозволяє називати це ( DetailsViewController), змінюючи його на viewWillDisappear.

override func viewWillDisappear(_ animated: Bool) {
   super.viewWillDisappear(animated)
   navigationController?.navigationBar.prefersLargeTitles = false
}

Зараз DetailsViewControllerя використовую willMove(to parent:).

override func willMove(toParent parent: UIViewController?) {
        navigationController?.navigationBar.prefersLargeTitles = true
}

Для переходу назад до великих назв.

Подивіться додані знімки того, як iOS 13 робить це, як iOS 12 робить це, вважаючи iOS 12 правильною поведінкою.

iOS 13 :

iOS 13

iOS 12 :

iOS 12


Якщо ви .prefersLargeTitlesнатискаєте контролер подання деталей до стека навігації, вам зовсім не потрібно змінювати , він автоматично використовуватиме невеликий заголовок, а потім повернеться до великого, як тільки ви повернетесь до контролера кореневого перегляду, наскільки я знаю
henrik-

@ henrik-dmg Я не впевнений, чи було це раніше, але вже не все йде до великої назви, якщо я це зробив, я спробував це.
Mohmmad S

1
largeTitleDisplayModeдо. automaticі ви повинні отримати бажаний перехід.
Гаррі Дж

@HarryJ де?
Mohmmad S

У вашому переглядіDidLoad або контролер навігації,navigationController?.navigationItem.largeTitleDisplayMode = .automatic
Гаррі J

Відповіді:


21

Те, що ти робиш, завжди було неправильним. Ви повинні встановити prefersLargeTitlesна trueодин раз для панелі навігації і ніколи не доторкнутися до неї знову.

Спосіб змінити те, що робить кожен контролер перегляду у великих заголовках, як видається, полягає в тому, що цей контролер перегляду встановлює власне navigationItem(у своєму viewDidLoad) бажане largeTitleDisplayMode. Отже, якщо перший vc має, .alwaysа другий має .neverвсе, буде гладко.


Така гарна відповідь! Ніколи не знав, що це спосіб мати великі та малі назви одночасно!
Kacper Cz

0

У мене був той самий випуск, і мені довелося розмістити NavigationItem на другій дошці розгортки ViewController. Мій NavigationItem створювався автоматично segue, і його prefersLargeTitleв програмі viewDidLoad()не було завершено створення до появи подання. Додавання NavigationItem до табло вирішило цю проблему і дозволило мені встановити prefersLargeTitleв меню властивостей розкадровки.


0

У моєму випадку ця проблема виникала під час пошкодження контролера перегляду, який є дитиною дитини UITabBarController. Налаштування largeTitleDisplayModeна дочірньому контролері було недостатньо, щоб виправити цю помилку.

Я вирішив цю проблему, додавши пункт навігації до UITabBarController сцени і настройки , largeTitleDisplayModeяк .neverтам.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.