我有一个称为SourceViewController的ViewController,它嵌入在NavigationController中。

选择SourceViewController后,DestinationViewController会选择UITableViewCell

我想隐藏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

下一个“显而易见的”步骤是在navigationBar.hidden = false中的viewDidAppear中设置SourceViewController,但这有很多原因:干燥,但返回到SourceViewController时,隐藏navigationBar会有延迟,一瞬间可见。

我该如何解决这个问题?

最佳答案

我认为这会起作用,隐藏导航栏。在出现/消失视图之前。

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


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

07-27 13:41