[英]view controller doesn't respect “largeTitleDisplayMode”
似乎我不能設置navigationItem.largeTitleDisplayMode = .always
除非我還設置了navigationBar.prefersLargeTitles = true
? 這是預期的行為嗎?
我真的很難相信蘋果會強迫我在導航控制器的每個屏幕上手動設置largeTitleDisplayMode = .never
,即使是我無法控制的屏幕,以便只顯示一個帶有大標題的屏幕。
您可以嘗試通過UINavigationControllerDelegate.willShow 這樣的調用來控制它。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.delegate = self
}
}
// Assumption: ViewController is rootViewController for the UINavigationController
extension ViewController: UINavigationControllerDelegate {
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
let isRootVC = (viewController === self)
viewController.navigationItem.largeTitleDisplayMode = isRootVC ? .always : .never
}
}
另一種選擇是對導航堆棧中的 rootViewController 實例的viewWillAppear(_:)
和viewWillDisappear(_:)
調用執行相同的管理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.