繁体   English   中英

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

[英]How can I make my app pop to a VC when the app enters the background?

我已经尝试了一段时间,以弄清楚当用户离开应用程序时如何使我的应用程序弹出回到我的initialVC,以便当他们回来时,打开的视图是主页,而不是他们离开的视图。用。 这段代码是我放入appDelegate文件中的代码。 现在,我收到一条错误消息,提示使用未解决的标识符'presentViewController'。请注意,我的应用程序有一个主VC(嵌入在导航控制器中),该主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)
    }

}

您可以在进入后台或进入前台时更改RootViewController。

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

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

尽可能以最详细的级别停止时,请保存当前状态。 这样,人们切换回您的应用程序时不会失去上下文。 例如,如果您的应用程序显示滚动数据,请保存当前滚动位置。 您可以在iOS版《应用程序编程指南》中的“在启动过程中保持应用程序的视觉外观”中了解有关保存和恢复应用程序状态的有效方法的更多信息。

苹果人机界面指南

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

您无法从应用程序委托中显示视图控制器,因此会出现错误。

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

func applicationDidEnterBackground(application: UIApplication) {

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

    navigationController.popToRootViewControllerAnimated(false);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM