【问题标题】:How to hide/show UI Navigation Bar for certain UIViews如何隐藏/显示某些 UIView 的 UI 导航栏
【发布时间】:2015-10-13 04:20:02
【问题描述】:

请看下面的故事板:

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

最好的方法是什么?

【问题讨论】:

  • 您是否能够查看其中一种解决方案?
  • 在 viewWillAppear 中隐藏 navigationController。不要忘记在其他类中添加相同的显示

标签: swift uitableview uinavigationcontroller uinavigationbar


【解决方案1】:

试试这个..

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

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

【讨论】:

  • 感谢您提供如此优雅的解决方案!
【解决方案2】:

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

self.navigationController?.navigationBar.hidden = true

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

【讨论】:

    【解决方案3】:

    我实现了一个方法,它在一秒钟后非常平滑地隐藏 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
            }
        }
    

    希望能帮到你

    您也可以将隐藏功能放入另一个类中,因此您无需在其他视图中重新键入它。

    编辑:

    我忘了提及.. 当您返回一个视图时,您需要将 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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多