提问者:小点点

iOS swift中隐藏导航栏的方法


最近我有一个问题。 在我的导航控制器堆栈(一个子控制器)中时:

MainScreen -> ScreenA -> ScreenB -> Screenc

所以在screenc中,我想隐藏导航栏和状态栏。 但是当我回到我的screenb时,我的状态栏和导航栏是重叠的。不知道为什么会这样。我在一些google搜索,一些SO回答。 然后我得到isNavigationBarHidding基是UIViewController,而isHidded基是UIView

为什么我用下面的代码隐藏我的导航栏和状态栏:

 override var prefersStatusBarHidden: Bool {
        return true
    }
 override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
       self.navigationController?.navigationBar.isHidden = true
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
       self.navigationController?.navigationBar.isHidden = false
    }

在我的前一个屏幕,我得到的问题,我的状态栏和导航栏是得到重叠。

但当我使用这个代码时:

 override var prefersStatusBarHidden: Bool {
            return true
        }
override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.isNavigationBarHidden = true
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        navigationController?.isNavigationBarHidden = false
    }

它工作得很好。 在我的前一个屏幕中没有重叠。 为什么会发生。 有什么具体的原因吗?贝希德:

NavigationController?。IsNavigationBarHidded(vs)self.NavigationController?。NavigationBar.IsHidded

我对iOS的开发很感兴趣。 只是想了解其中的区别。 这样我就能知道我做错了什么。

谢谢


共1个答案

匿名用户

是的,差别很大。 说得很好! 第二个则礼貌而正确地指导导航控制器如何配置自己。 第一个粗暴地,非法地进入导航控制器的接口,并直接操纵它。