![](/img/trans.png)
[英]Set NavigationBar title on next ViewController without visual bugs
[英]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.