当应用程序进入后台时,如何让我的应用程序弹出到VC?

时间:2015-01-29 02:02:45

标签: ios swift

我已经尝试了一段时间来弄清楚当用户离开应用时如何让我的应用弹回我的initialVC,以便当他们回来时,打开的视图是主页而不是他们留下的观点。这段代码就是我放在appDelegate文件中的代码。现在我收到错误,说明 使用未解析的标识符' presentViewController' 请注意我的应用有一个主VC(嵌入在导航控制器),它有2个按钮,每个按钮引导一个不同的tableViewController(它们都嵌入在导航控制器中)。

func applicationDidEnterBackground(application: UIApplication) {

    var storyboard = UIStoryboard(name: "MainStoryboard", bundle: NSBundle.mainBundle())

    if let myVC = storyboard.instantiateViewControllerWithIdentifier("Home") as? ViewController {
        presentViewController(myVC, animated: true, completion: nil)
    }

}

4 个答案:

答案 0 :(得分:1)

您可以在前往背景或前景时更改RootViewController。

let storyBoard = UIStoryboard(name: "Main", bundle: nil)
if let controller =  storyBoard.instantiateViewControllerWithIdentifier("") as? UIViewController {
self.window?.rootViewController = controller
}

答案 1 :(得分:0)

您不应该在iOS世界中尝试此行为,因为它可能会导致拒绝。根据苹果的指导原则:

  

以最精细的细节停止时保存当前状态   可能。通过这种方式,人们不会失去他们的背景   切换回您的应用。例如,如果您的应用显示滚动   数据,保存当前滚动位置。您可以了解更多信息   在Preserving中保留和恢复应用状态的有效方法   应用程序编程指南中的应用程序的视觉外观   对于iOS。

Apple Human Interface Guidelines

答案 2 :(得分:0)

也许最好的解决方案是不允许应用在后台运行。这样,每次用户启动您的应用时,它都会重新开始。

答案 3 :(得分:0)

您无法从应用委托中呈现视图控制器,从而出现错误。

但是,如果你想要弹出初始视图控制器(即“根视图控制器”),并且你正在使用UINavigationController,你可以这样做:

func applicationDidEnterBackground(application: UIApplication) {

    var navigationController = application.windows[0].rootViewController as UINavigationController

    navigationController.popToRootViewControllerAnimated(false);
}