我是一名新程序员,当用户点击该应用时,我试图让我的应用回到initialVC。现在,当我在模拟器上运行我的应用程序并转到硬件时 - >回到主页并单击应用程序以打开它,显示的视图是我在模拟器主页上离开的视图,而不是我希望它显示的VC。我很乐意从一些经验丰富的开发者那里获得一些帮助。多谢你们!
更新:好的,在与@Christian Woerz解决方案玩了一下之后,我已经明白了这一点;
func applicationDidEnterBackground(application: UIApplication) {
var storyboard = UIStoryboard(name: "MainStoryboard", bundle: NSBundle.mainBundle())
// Here when instituting my VC, the string I pass it is the "storyboardID" I gave my VC. Then the type has to be the VC I want to show.
if let myController = storyboard.instantiateViewControllerWithIdentifier("Home") as? ViewController {
// I may be wrong, but isn't there something that's supposed to go before "presentViewController"?
presentViewController(myController, animated: true, completion: nil)
}
}
在了解了更多内容之后,我有了一个新问题。如果我要显示的VC嵌入在navigationController中,我应该显示navigationController吗?
答案 0 :(得分:3)
在AppDelegate.swift
至func applicationDidEnterBackground(application: UIApplication)
添加:
let nc = window.rootViewController as UINavigationController
nc.popToRootViewControllerAnimated(true)
仅当您的根视图控制器为UINavigationController
时才有效。
如果您没有UINavigationController
,您应该能够:
window.rootViewController.dismissViewControllerAnimated(true, completion: false)
答案 1 :(得分:3)
您必须使用AppDelegate.swift
文件。在那里,你找到了方法:
func applicationDidEnterBackground(application: UIApplication!) {
}
每次应用程序进入后台时都会调用此方法。因此,您可以添加一个函数来显示ViewController。但首先你必须访问你的故事板:
var storyboard = UIStoryboard(name: "MainStoryboard", bundle: NSBundle.mainBundle())
之后,您可以使用storyboard
访问ViewController。
func applicationDidEnterBackground(application: UIApplication!) {
if let yourController = storyboard.instantiateViewControllerWithIdentifier("YourId") as? ResultViewController {
presentViewController(yourController, animated: true, completion: nil)
}
}
但是你必须为你的ViewController
添加一个标识符。关于这一点的好处是,你可以调用每个ViewController而不仅仅是rootviewcontroller:
答案 2 :(得分:0)
在UIApplicationDelegate
实施中,实施applicationWillEnterForeground
,您可以在导航堆栈中弹出内容,或者在那里做任何事情。