如何 hide/show UI 某些 UI 视图的导航栏

How to hide/show UI Navigation Bar for certain UIViews

请看下面的故事板:

我需要为 UITableViewController "Zero" 动态隐藏 UINavigationBar 并为 UITableViewController "One" 和 "Two" 显示它。

最好的方法是什么?

您可以设置 UINavigationBarhidden 属性 当视图出现时...

self.navigationController?.navigationBar.hidden = true

只需在您希望隐藏导航栏的视图中执行此操作

试试这个..

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

您可以使用 viewWillDisappear 再次将其设置为可见

我实现了一种方法,它在一秒钟后非常平滑地隐藏了 NavigationController...我更喜欢这个而不是仅仅隐藏它 ;)

   var navigation: UINavigationController!

override func viewDidLoad() {
        navigation = navigationController!
        timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "animate", userInfo: nil, repeats: false)
    }

    func animate(){
        hideController(self.navigation)
    }

    func hideController(navigationController: UINavigationController){
        UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {

            self.navigationController.alpha = 0.0

            }, completion: nil)
}


    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        if self.navigationController!.respondsToSelector("interactivePopGestureRecognizer") {
            timer.invalidate()
            UIApplication.sharedApplication().statusBarHidden = false
        }
    }

希望能帮到你

您也可以将隐藏功能放入另一个 class,这样您就不需要在其他视图中重新键入它了。

编辑:

我忘了提..当你返回一个视图时,你需要将 NavigationController 设置回可见...因此创建另一个方法,例如函数 show 并将其 alpha 设置为 1.0

    func show(navigationController: UINavigationController){
        UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {

            self.navigationController.alpha = 1.0

            }, completion: nil)
}