setNavigationBarHidden不起作用

问题描述 投票:0回答:1

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

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)
}

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

ios swift uinavigationcontroller uinavigationbar
1个回答
0
投票

我认为你是在正确的轨道,但你需要定义采取的行动。假设您在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)
}
© www.soinside.com 2019 - 2024. All rights reserved.