如何在进入后台或恢复到前台时重定向到主屏幕
How to redirect to home screen upon going to background or resuming to the foreground
我只是有一个关于 Swift 中的应用程序生命周期和编程的快速问题。每当用户进入后台时,我都试图 return 到主屏幕。例如,如果用户接到电话或按下主页按钮,应用程序应该返回到它开始的主屏幕,而不是它离开的地方。
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 中的代码,但不知何故它给出了一个错误:Attempt to present ... on ... who view is not in the window hierarchy!"
请帮帮我。非常感谢!!
您需要忘记最后一个 rootViewController,而不是在当前 rootViewController 上呈现。忘记现有的 window 也很棒。使用代码:
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()
}
我只是有一个关于 Swift 中的应用程序生命周期和编程的快速问题。每当用户进入后台时,我都试图 return 到主屏幕。例如,如果用户接到电话或按下主页按钮,应用程序应该返回到它开始的主屏幕,而不是它离开的地方。
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 中的代码,但不知何故它给出了一个错误:Attempt to present ... on ... who view is not in the window hierarchy!"
请帮帮我。非常感谢!!
您需要忘记最后一个 rootViewController,而不是在当前 rootViewController 上呈现。忘记现有的 window 也很棒。使用代码:
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()
}