Gezinme çubuğundaki küçük başlık anahtarına büyük başlık düzgün değil iOS 13, yapışkan


11

Ben UINavigationControllervarsayılan değeri olan bir var navigationBar.prefersLargeTitles = true.

Ben o geçiş yaşıyorum falsezaman I push yeni sahnenin içine (çağrı sağlar DetailsViewControlleriçine değiştirerek,) viewWillDisappear.

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

Şimdi DetailsViewControllerkullanıyorum willMove(to parent:).

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

Büyük başlıklara geri dönmek için.

İOS 12'nin doğru davranış olduğunu göz önünde bulundurarak, iOS 13'ün iOS 12'nin nasıl yaptığıyla nasıl yapıldığına dair ekli anlık görüntüleri inceleyin .

iOS 13 :

iOS 13

iOS 12 :

iOS 12


.prefersLargeTitlesBir ayrıntı görünümü denetleyicisini gezinme yığınına iterken hiç değiştirmek zorunda değilsiniz , otomatik olarak küçük bir başlık kullanacak ve daha sonra bildiğim kadarıyla kök görünüm denetleyicisine döndüğünüzde büyük olana geri dönecek.
henrik-dmg

@ henrik-dmg Daha önce böyle olup olmadığından emin değilim, ama artık yapmazsam her şey büyük başlığa gitmiyor, bunu denedim.
Mohmmad S

1
largeTitleDisplayModeiçin. automaticve istediğiniz geçişi almalısınız.
Harry J

@HarryJ nerede?
Mohmmad S

SidLoad veya navigasyon denetleyicisi,navigationController?.navigationItem.largeTitleDisplayMode = .automatic
Harry J

Yanıtlar:


21

Yaptığın şey her zaman yanlıştı. Gezinme çubuğu prefersLargeTitlesiçin bir truekez ayarlamalı ve bir daha asla dokunmamalısınız.

Her bir görünüm denetleyicisinin göründüğü gibi büyük başlıklarla ilgili yaptıklarını değiştirmenin yolu, görünüm denetleyicisinin kendi navigationItem( kendi içinde viewDidLoad) istenen değere ayarlamasıdır largeTitleDisplayMode. Yani ilk vc .alwaysve ikinci vc varsa .neverher şey pürüzsüz olacaktır.


Ne güzel bir cevap! Aynı anda büyük ve küçük unvanlara sahip olmanın yolu olduğunu asla bilmiyordum!
Kacper Cz

0

Aynı sorunu vardı ve ikinci ViewController'ın storyboard bir NavigationItem yerleştirmek zorunda kaldı. Benim NavigationItem segue tarafından otomatik olarak oluşturulan ve onun prefersLargeTitleiçinde viewDidLoad()görüş belirdi önce yaratma bitmemişti. Film şeridine bir NavigationItem eklemek bu sorunu çözdü ve prefersLargeTitlefilm şeridinin özellikler menüsünde ayarlamama izin verdi .


0

Benim durumumda bu sorun, bir alt görünümü olan bir görünüm denetleyicisine bir segue sırasında oluşuyordu UITabBarController. Alt largeTitleDisplayModegörünüm denetleyicisindeki ayar bu hatayı düzeltmek için yeterli değildi.

Ben UITabBarController sahneye navigasyon öğesi ekleme ve ayarlayarak sorunu çözmüş largeTitleDisplayModeolarak .neverorada.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.