簡體   English   中英

設置NavigationBar僅用於目的地ViewController

[英]Set NavigationBar for Destination ViewController Only

我有一個稱為SourceViewController的ViewController,它嵌入在NavigationController中。

選擇UITableViewCell SourceViewController選擇到DestinationViewController

我想在SourceViewController上隱藏導航欄,但在DestinationViewController上顯示它以顯示“后退”按鈕。

因此,在SourceViewController

override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationController?.navigationBar.hidden = true
}

並且在DestinationViewController :覆蓋func viewDidLoad(){super.viewDidLoad()

    self.navigationController?.navigationBar.hidden = false
}

但是,當我在DestinationViewController點擊“返回”以返回到SourceViewController ,導航SourceViewController將重新出現在SourceViewController

下一個“顯而易見的”步驟是在SourceViewController viewDidAppear中設置navigationBar.hidden = false ,但這有很多原因:主要是DRYness,而且在返回SourceViewController ,隱藏navigationBar有所延遲,並且對於一瞬間。

我該如何解決這個問題?

檢查ViewController生命周期希望了解iOS UIViewController生命周期 當您啟動程序時,將調用viewDidLoad並一切正常,但是從detailController返回時,未調用viewDidLoad,只需在viewWillApear中更改此行(self.navigationController?.navigationBar.hidden = true),一切都必須正常。

我認為這會起作用,隱藏導航欄。 在顯示/消失視圖之前。

override func viewWillAppear(animated: Bool) {
    navigationController?.navigationBarHidden = true
    super.viewWillAppear(animated)
}


override func viewWillDisappear(animated: Bool) {
    navigationController?.navigationBarHidden = true
    super.viewWillDisappear(animated)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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