【问题标题】:How to remove navigation bar from the first UITabBarController view?如何从第一个 UITabBarController 视图中删除导航栏?
【发布时间】:2020-08-14 16:31:14
【问题描述】:

我有一个具有登录和注册屏幕的应用程序,当点击“登录”按钮或“注册”按钮时,它们会推送到 tabbarcontroller。但是,一旦标签栏加载,第一个屏幕的顶部就会出现一个导航栏。如果我使用底部导航栏选择下一个屏幕,导航栏就消失了,所有屏幕都是一样的。如果我然后返回第一个屏幕,顶部的导航栏不存在。我为导航栏编写的代码隐藏在所有视图上,但它仍然显示后退按钮。我设法删除了后退按钮,因为单击它,它会返回登录和注册屏幕。我尝试将根视图控制器更改为 UITabBarController 但第一个屏幕上的导航栏在那里,当我导航到下一个屏幕并返回时,顶部导航栏消失了。尝试删除它很长时间,但无法弄清楚如何去做。如果这是一个简单易行的问题,我们深表歉意。

【问题讨论】:

  • Q 看起来很混乱,但我想要的最终结果是:点击登录或注册按钮将导致 UITabBarController 的初始视图没有顶部的导航栏。正如我所提到的,如果我进入下一个屏幕,例如搜索栏屏幕,然后返回初始视图,顶部导航栏就消失了。它只显示为初始视图加载但离开它,一切都很好。

标签: swift navigationbar tabbarcontroller rootviewcontroller


【解决方案1】:

如果您想在视图控制器上显示导航栏,请使用您的 ViewWillAppear 方法:

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

要在推送另一个视图控制器后隐藏该导航栏,您可以简单地将其隐藏:

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

如果它按您的预期工作,请在此处发表评论。

【讨论】:

  • 谢谢,我设法完成了它,并意识到我从未添加 ViewWillDisappear 函数,这可能是它无法正常工作的原因!不过谢谢你的回复!