如何迅速关闭所有以正面呈现在彼此面前的视图控制器?

时间:2018-12-30 06:25:28

标签: ios swift presentmodalviewcontroller unwind-segue dismissviewcontroller

所以我有一个主视图控制器,该视图控制器将出现在彼此的前面,并且我希望当用户单击最后一个视图控制器中的按钮时,关闭所有显示的模态视图控制器,因此我使用了这段代码,但是我没有无法获得结果

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

我想使用unsegue segue退出但也有另一个问题 最后一个视图控制器将在许多不同的情况下出现很多次,因此我只是解散了所有出现的模态视图控制器。 我宁愿不使用navigationController,但是如果我必须使用它,请告诉我应该在哪里使用?

1 个答案:

答案 0 :(得分:0)

两个选项:

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

    self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
    
  2. 关闭所有viewController,直到它具有presentingController

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