如何在 swift 中关闭所有在彼此面前呈现的视图控制器



所以我有一个主视图控制器,视图控制器将彼此呈现,我希望当用户单击最后一个视图控制器中的按钮时关闭所有呈现的模式视图控制器,所以我使用了这段代码但我没有得到结果

let destination = matchViewController()
let appDelegate:UIApplicationDelegate = UIApplication.shared.delegate!
let initialViewController = destination
let navigationController = UINavigationController(rootViewController: initialViewController)
appDelegate.window??.rootViewController = navigationController
appDelegate.window??.makeKeyAndVisible()

我想使用展开 segue 退出 但还有另一个问题最后一个视图控制器将在许多不同的情况下多次出现,所以我只是忽略所有呈现的模态视图控制器。这种情况我宁愿不使用导航控制器但是如果我必须使用它,请告诉我我应该在哪里使用它?

两个选项:

  1. 关闭根视图控制器上的所有视图控制器

    self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
    
  2. 关闭所有视图控制器,直到它有presentingController

    func dismissAllControllers() {
        guard let vc = self.presentingViewController else { return }
        while (vc.presentingViewController != nil) {
            vc.dismiss(animated: true, completion: nil)
        }
    }
    

最新更新