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

Ios 导航到特定视图时导航栏消失,ios,cocoa-touch,uinavigationbar,Ios,Cocoa Touch,Uinavigationbar,我有一个UINavigationController,我推送和弹出视图,但在某些视图中,我想从堆栈中转到特定视图,因此我使用此代码。它可以工作,但导航栏消失了 for controller in self.navigationController!.viewControllers as Array { if controller.isKind(of: HomeViewController.self) { self.navigationController!.pop

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

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

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

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

您可以按Idem的注释中所述以编程方式显示导航栏,或者如果您使用的是XCode interface builder,您可能还希望确保在视图属性的模拟度量区域中为每个视图正确定义状态栏-这适用于非情节提要布局。

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

但是,您也可以尝试呈现视图,而不是弹出视图

所以改变

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

当然,这个函数“setNavigationBarHidden”的作用是顾名思义的,它让您决定是隐藏还是显示导航栏。至于为什么当你打开HomeVC时导航栏消失了,我应该检查你的代码来回答。最常见的(至少在我的项目中)是视图层次结构中前面的VC隐藏了它的导航栏。
self.present(controller, animated: true, completion: nil)