如何在前往背景或恢复到前台时重定向到主屏幕

时间:2018-05-01 01:02:58

标签: swift application-lifecycle

我只是对Swift中的应用生命周期和编程有一个简单的问题。我试图在用户前往后台时返回主屏幕。例如,如果用户收到呼叫或按下主页按钮,应用程序应返回到它开始的主屏幕而不是停止的位置。

func applicationWillEnterForeground(_ application: UIApplication) {
    guard let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(
        withIdentifier: "main") as? MainViewController else { return }
    self.window?.rootViewController?.present(vc, animated: true, completion: nil)
}

上面是我在appDelegate中的代码,但不知怎的,它给出了一个错误:尝试显示...... on ...其视图不在窗口层次结构中!“

请帮帮我。非常感谢!!

1 个答案:

答案 0 :(得分:2)

您需要忘记最后一个rootViewController,而不是呈现当前的rootViewController。忘记现有的窗户也很棒。使用代码:

func applicationWillEnterForeground(_ application: UIApplication) {

    guard let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(
        withIdentifier: "main") as? UINavigationController else {
            print("NIL VC")
            return
    }

    self.window = UIWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = vc
    self.window?.makeKeyAndVisible()
}