我在swift中構建iOS應用程序,並且在啓動應用程序時我想首先顯示viewController2,它位於viewController1之上,該viewController1嵌入在UINavigationController中。關鍵部分是ViewController2不是導航堆棧的一部分,而是呈現而不是被推送。從UINavigationController通過應用程序代理呈現UIViewController
這是我目前的嘗試,它不起作用,只在啓動時顯示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
}
我在這個地方的結構,因爲我使用戶能夠從左至右,從右向左滑動,去viewController2和viewController3以類似的方式來Snapchat。呈現這些控制器似乎是最好的想法,因爲他們沒有導航欄,一旦完成,你會想要返回到viewControlller1 - 也許我需要改變我的應用程序的結構,但理想情況下,不會喜歡,因爲我的目標是提交此mvp下個星期。
幫助非常感謝你的iOS和迅捷嚮導。
//認爲我需要更改應用程序的結構以在導航堆棧中包含viewController2 :(因爲使用接受的答案會導致viewController1在viewController2呈現之前短暫出現,這是合乎邏輯的 - 從長遠來看,這將是儘管短期內疼痛
對於這樣的問題,我總是建議看看[這個問題](HTTPS:。。/ /stackoverflow.com/questions/19962276/best-practices-for-storyboard-login-screen-handling-clearing-of-data-upon- logou)和它的許多答案 – Honey