导航到特定视图时导航栏消失

Posted

技术标签:

【中文标题】导航到特定视图时导航栏消失【英文标题】:Nav bar disappears when navigating to a specific view 【发布时间】:2019-02-04 12:23:21 【问题描述】:

我有一个UINavigationController,我推送和弹出视图,但在某些视图中,我想从堆栈中转到特定视图,所以我使用此代码。它可以工作,但导航栏消失了。

for controller in self.navigationController!.viewControllers as Array 
        if controller.isKind(of: HomeViewController.self) 
        self.navigationController!.popToViewController(controller, animated: true)
            break
        
    

【问题讨论】:

【参考方案1】:

在您的 HomeViewController 中,您可以尝试以下操作:

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

【讨论】:

当然,这个函数“setNavigationBarHidden”正如它的名字所暗示的那样,它让你决定是隐藏还是显示你的导航栏。至于为什么当你弹出 HomeVC 时导航栏消失了,我应该检查你的代码来回答。最常见的(至少在我的项目中)是视图层次结构中的前一个 VC 隐藏了它的导航栏。【参考方案2】:

您可以按照 Idem 的评论中提到的方式以编程方式显示导航栏,或者如果您使用的是 XCode 界面构建器,您可能还需要确保在属性的模拟指标区域中为每个视图正确定义状态栏查看 - 这适用于非故事板布局。 Simulated Metrics Section of properties in XCode Interface Builder

【讨论】:

【参考方案3】:

你可以尝试回答@ldem提出的问题

但是你也可以尝试展示视图而不是弹出

所以改变

self.navigationController!.popToViewController(controller, animated: true)

self.present(controller, animated: true, completion: nil)

【讨论】:

以上是关于导航到特定视图时导航栏消失的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的导航栏在 Xcode 中消失了?

弹出到根视图控制器时导航栏消失

以编程方式推送时导航栏消失

为啥我在 iPhone 6+ 上旋转时导航栏会从拆分视图中消失?

导航栏在搜索结果表视图中消失

动态创建视图控制器后导航栏消失