我正在swift中构建一个iOS应用程序,在启动应用程序时,我想首先显示viewController2,它显示在viewController1之上,它嵌入在UINavigationController中。关键部分是ViewController2不是导航堆栈的一部分,而是呈现而不是被推送。
这是我目前的尝试,它不起作用,只在启动时显示ViewController1。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController1 = mainStoryboard.instantiateViewController(withIdentifier: "VC1") as! ViewController1
let viewController2 = mainStoryboard.instantiateViewController(withIdentifier: "VC2") as! ViewController2
let navController = UINavigationController(rootViewController: viewController1)
viewController1.present(viewController2, animated: false)
self.window?.rootViewController = navController
self.window?.makeKeyAndVisible()
return true
}
我有这个结构,因为我使用户能够从左到右和从右到左滑动以与Snapchat类似的方式获得viewController2和viewController3。提出这些控制器似乎是最好的主意,因为他们没有导航栏,一旦完成你就会想要返回viewControlller1 - 也许我需要改变我的应用程序的结构,但理想情况下不喜欢我想要提交这个mvp在下周内。
非常感谢iOS和快速向导。
//认为我需要更改应用程序的结构以在导航堆栈中包含viewController2 :(因为使用接受的答案会导致viewController1在viewController2出现之前被简要地看到,这是合乎逻辑的 - 从长远来看,这将更好尽管短期疼痛
答案 0 :(得分:1)
rootViewController
。按此顺序执行它应该可以正常工作。
self.window?.rootViewController = navController
self.window?.makeKeyAndVisible()
navController.present(viewController2, animated: false)