📌  相关文章
📜  一次关闭两个视图控制器 swift (1)

📅  最后修改于: 2023-12-03 14:48:46.296000             🧑  作者: Mango

一次关闭两个视图控制器

在开发 iOS 应用时,经常遇到需要同时关闭多个视图控制器的情况。本文将介绍使用 Swift 一次性关闭多个视图控制器的方法。

方案一:使用 unwind segue

在需要关闭多个视图控制器的场景,我们可以创建一个 unwind segue,然后在该 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

另一个关闭多个视图控制器的方法是直接修改应用的 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 中关闭多个视图控制器的方法。可以根据具体场景选择不同的方法,实现应用中需要的功能。