Ios Swift仅在首次使用导航控制器发射时显示视图

Ios Swift仅在首次使用导航控制器发射时显示视图,ios,swift,uinavigationcontroller,swift3,uinavigationbar,Ios,Swift,Uinavigationcontroller,Swift3,Uinavigationbar,我有一些代码,在第一次启动应用程序时,只显示故事板中的第一个视图控制器。之后,我想跳过这一页,直接进入每次发布的第二个视图。我已经将第一个视图(连接到第二个视图)嵌入到导航控制器中 我的问题是,在第一次启动后,当应用程序直接转到第二个视图时,它显示的视图顶部没有导航栏,我不知道为什么 在我的appdelegate中: func firstLaunchCheck(){ let launchedBefore = UserDefaults.standard.bool(forKey: "

我有一些代码,在第一次启动应用程序时,只显示故事板中的第一个视图控制器。之后,我想跳过这一页,直接进入每次发布的第二个视图。我已经将第一个视图(连接到第二个视图)嵌入到导航控制器中

我的问题是,在第一次启动后,当应用程序直接转到第二个视图时,它显示的视图顶部没有导航栏,我不知道为什么

在我的appdelegate中:

func firstLaunchCheck(){
        let launchedBefore = UserDefaults.standard.bool(forKey: "launchedBefore")
    if launchedBefore{ 
        let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let initialView : UIViewController = storyboard.instantiateViewController(withIdentifier: "mainScreen") as UIViewController
        self.window = UIWindow(frame: UIScreen.main.bounds)
        self.window?.rootViewController = initialView
        self.window?.makeKeyAndVisible()

    }
    else{

        UserDefaults.standard.set(true, forKey: "launchedBefore")
    }

}
更新:
最后,我只是更改了导航控制器中嵌入的视图控制器(不包括第一个),因为将它放在那里对我来说没有意义。因此,现在在第一次启动后,它加载导航控制器
SecondViewController
未添加到
UINavigationController
层次结构中,要查看顶部的
navigationBar
,如果appDelegate中的launchedBefore为false,您可以在firstVC上按
SecondViewController

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let secondVC = storyboard.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController 
let navigationController = window.rootViewController as! UINavigationController
navigationController?.pushViewController(secondVC, animated: false) 

您需要在UINavigationController中嵌入第二个视图控制器,即“mainScreen”,然后使其成为应用程序窗口的rootViewController

let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let navigationController = UINavigationController.init(rootViewController: storyboard.instantiateViewController(withIdentifier: "mainScreen"))
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = initialView
self.window?.makeKeyAndVisible()

@jcka vc2应该嵌入到导航控制器中,第二个应该转到导航控制器,其顶部的vc是vc2。因为第二次跳过第一个具有导航栏的视图控制器。如果要再次显示导航栏,还必须将其添加到第二视图控制器上