3

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

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

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

4

1 回答 1

0

两种选择:

  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)
        }
    }
    
于 2018-12-30T06:44:18.943 回答