尝试隐藏导航栏时展开可选值时发现 nil

found nil while unwrapping an Optional value when try to hidden navigation bar

我有问题。我想让如果在第一个 table 视图上点击单元格,它将显示第二个视图控制器并且隐藏导航栏。然后我使用带有代码的按钮返回第一个视图控制器:

@IBAction func backButtonTapped(sender: AnyObject) {
    let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let VC: UIViewController = storyBoard.instantiateViewControllerWithIdentifier("restaurant")
    self.presentViewController(VC, animated: true, completion: nil)
}

但打印出来

fatal error: unexpectedly found nil while unwrapping an Optional value

在第二个视图控制器中,我使用这个隐藏了导航栏:

    func hiddenNavBar(){

    self.navigationController!.navigationBar.hidden = true
}

并使用 :

在第一个视图控制器上再次显示导航栏
override func viewWillAppear(animated: Bool) {
    createNavBar()
}

func createNavBar(){

    self.navigationController!.navigationBar.hidden = false
}

我的主要故事板如下所示:

您返回上一个视图控制器的方式有误。 如果您使用导航视图控制器来推送第二个视图控制器,那么您需要使用弹出视图控制器 self.navigationController?.popViewControllerAnimated(true)

UINavigationViewController 是如何工作的? 它会创建一个堆栈来跟踪您推送的所有视图控制器,如果您想返回,只需在堆栈工作时从顶部弹出视图控制器即可。

写?代替 !在导航栏隐藏线。

像这样,

self.navigationController?.navigationBar.hidden = 真