Saya punya UINavigationController
dengan nilai default-nya navigationBar.prefersLargeTitles = true
.
Saya beralih ke false
ketika saya push
menjadi adegan baru sebut saja ( DetailsViewController
), dengan mengubahnya menjadi viewWillDisappear
.
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}
Sekarang DetailsViewController
saya menggunakan willMove(to parent:)
.
override func willMove(toParent parent: UIViewController?) {
navigationController?.navigationBar.prefersLargeTitles = true
}
Untuk beralih kembali ke judul besar.
Perhatikan snapshot terlampir tentang bagaimana iOS 13 melakukannya dengan bagaimana iOS 12 melakukannya, mengingat iOS 12 adalah perilaku yang benar.
iOS 13 :
iOS 12 :
ios
swift
uinavigationcontroller
uinavigationbar
Mohmmad S
sumber
sumber
.prefersLargeTitles
sama sekali ketika mendorong controller tampilan detail ke tumpukan navigasi, itu akan secara otomatis menggunakan judul kecil dan kemudian kembali ke yang besar setelah Anda kembali ke controller tampilan root, sejauh yang saya tahulargeTitleDisplayMode
untuk.automatic
dan Anda harus mendapatkan transisi yang diinginkan.navigationController?.navigationItem.largeTitleDisplayMode = .automatic
Jawaban:
Apa yang Anda lakukan selalu salah. Anda harus menetapkan
prefersLargeTitles
untuktrue
sekali untuk bar navigasi dan tidak pernah menyentuh lagi.Cara untuk mengubah apa yang dilakukan oleh setiap pengontrol tampilan tentang judul besar seperti yang terlihat adalah bahwa pengontrol tampilan menetapkan sendiri
navigationItem
(di dalamnyaviewDidLoad
) untuk memiliki yang diinginkanlargeTitleDisplayMode
. Jadi, jika yang pertama vc.always
dan yang kedua memiliki.never
semuanya akan lancar.sumber
Saya memiliki masalah yang sama dan harus meletakkan NavigationItem di storyboard ViewController kedua. NavigationItem saya sedang dibuat secara otomatis oleh segue dan
prefersLargeTitle
di dalamnyaviewDidLoad()
belum selesai dibuat sebelum tampilan muncul. Menambahkan NavigationItem ke storyboard memperbaiki masalah ini dan memungkinkan saya untuk mengaturprefersLargeTitle
menu properti di storyboard.sumber
Dalam kasus saya masalah ini terjadi selama segue ke view controller yang merupakan anak dari a
UITabBarController
. PengaturanlargeTitleDisplayMode
pada pengontrol tampilan anak tidak cukup untuk memperbaiki bug ini.Saya telah memecahkan masalah ini dengan menambahkan item navigasi untuk adegan UITabBarController dan pengaturan
largeTitleDisplayMode
sebagai.never
ada.sumber