簡體   English   中英

視圖控制器不尊重“largeTitleDisplayMode”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM