当用户打开应用程序时,如何让iOS应用程序返回到initialVC?

时间:2015-01-28 18:26:28

标签: ios swift

我是一名新程序员,当用户点击该应用时,我试图让我的应用回到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吗?

3 个答案:

答案 0 :(得分:3)

AppDelegate.swiftfunc 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:

enter image description here

答案 2 :(得分:0)

UIApplicationDelegate实施中,实施applicationWillEnterForeground,您可以在导航堆栈中弹出内容,或者在那里做任何事情。