📅  最后修改于: 2023-12-03 14:48:46.296000             🧑  作者: Mango
在开发 iOS 应用时,经常遇到需要同时关闭多个视图控制器的情况。本文将介绍使用 Swift 一次性关闭多个视图控制器的方法。
在需要关闭多个视图控制器的场景,我们可以创建一个 unwind segue,然后在该 unwind segue 方法中关闭多个视图控制器。
在需要关闭的第一个视图控制器上,ctrl+drag 拉一个线到退出场景的视图控制器。在弹出的菜单中,选择 "unwindToViewController"。
@IBAction func unwindToViewController(_ segue: UIStoryboardSegue) {}
这个方法将被 unwind segue 调用,我们可以在该方法中关闭多个视图控制器。
在 unwindToViewController 方法中,我们通过 presentingViewController?.presentingViewController?.dismiss(animated: true, completion: nil) 方法关闭多个视图控制器。
@IBAction func unwindToViewController(_ segue: UIStoryboardSegue) {
presentingViewController?.presentingViewController?.dismiss(animated: true, completion: nil)
}
另一个关闭多个视图控制器的方法是直接修改应用的 UIWindow 的 rootViewController。
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
appDelegate.window?.rootViewController = rootViewController
appDelegate.window?.makeKeyAndVisible()
通过将 rootViewController 设置为新的视图控制器,我们可以关闭窗口中的所有视图控制器。这种方法不需要创建 unwind segue,因此更加直观和简洁。
以上是 Swift 中关闭多个视图控制器的方法。可以根据具体场景选择不同的方法,实现应用中需要的功能。