setNavigationBarHidden不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了setNavigationBarHidden不起作用相关的知识,希望对你有一定的参考价值。

这对你们中的一些人来说似乎很明显,但我无法在网上找到答案。我试图让我的导航栏只出现在一个视图控制器上,所以所有的教程都显示我刚刚添加了这个:

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationController?.setNavigationBarHidden(true, animated: false)
}
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.setNavigationBarHidden(false, animated: false)
}

但是当我退出这个视图控制器然后返回它时,导航栏就不存在了。有任何想法吗??

答案

我认为你是在正确的轨道,但你需要定义采取的行动。假设您在View Controller中有UIScrollView,并且您希望导航栏消失,所以这里是您可以使用的最佳代码。

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
    if(velocity.y>0) {
        UIView.animate(withDuration: 2.5, delay: 0, options: UIViewAnimationOptions(), animations: {
            self.navigationController?.setNavigationBarHidden(true, animated: true)
        }, completion: nil)

    } else {
        UIView.animate(withDuration: 2.5, delay: 0, options: UIViewAnimationOptions(), animations: {
            self.navigationController?.setNavigationBarHidden(false, animated: true)
        }, completion: nil)
    }

}

在您的情况下,您不需要将动画两次声明它已经由函数定义尝试删除,如下所示。

override func viewWillDisappear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(true, animated: false)
}
override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(false, animated: false)
}

以上是关于setNavigationBarHidden不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

我的Android进阶之旅------&gt;Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

Swift 调用 setNavigationBarHidden 但视图不会移到顶部

setNavigationBarHidden 动画在 iPhone X 上无法正常工作

setNavigationBarHidden 使整个视图向上/向下滑动

ios UINavgationController setNavigationBarHidden