Swift仅在首次使用导航控制器启动时显示视图

时间:2017-02-05 01:38:48

标签: ios swift uinavigationcontroller swift3 uinavigationbar

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

我的问题是,在第一次启动后应用程序直接进入第二个视图时,它显示的视图没有顶部的导航栏,我不确定原因。

在我的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")
    }

}

更新 我只是改变了哪个视图控制器嵌入在导航控制器中(排除了第一个),因为我没有意义将它放在那里。所以现在在第一次启动后加载导航控制器

2 个答案:

答案 0 :(得分:0)

{p> SecondViewController未添加到UINavigationController层次结构中,如果在appDelegate中的launchBefore为false,则可以在{vn}上推送navigationBar以查看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) 

答案 1 :(得分:0)

你需要嵌入第二个视图控制器,即" mainScreen"在UINavigationController中,然后将其设置为应用程序窗口的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()