Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何关闭所有在swift中以模式显示在彼此前面的视图控制器?_Ios_Swift_Presentmodalviewcontroller_Unwind Segue_Dismissviewcontroller - Fatal编程技术网

Ios 如何关闭所有在swift中以模式显示在彼此前面的视图控制器?

Ios 如何关闭所有在swift中以模式显示在彼此前面的视图控制器?,ios,swift,presentmodalviewcontroller,unwind-segue,dismissviewcontroller,Ios,Swift,Presentmodalviewcontroller,Unwind Segue,Dismissviewcontroller,因此,我有一个主视图控制器,视图控制器将显示在彼此前面,我希望当用户单击最后一个视图控制器中的按钮时,关闭所有显示的modally视图控制器,因此我使用了此代码,但没有得到结果 let destination = matchViewController() let appDelegate:UIApplicationDelegate = UIApplication.shared.delegate! let initialViewController = destination let naviga

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

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,但如果我必须使用它,请告诉我应该在哪里使用它?

两个选项:

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

    self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
    
  • 关闭所有ViewController,直到它有一个持续控制器

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

  • 关闭所有视图控制器,直到它有一个presentingController。这是如何工作的?您需要在最后一个视图控制器按钮上调用此操作确定主页面中的某些视图控制器存在问题,在此之前,我不想关闭它们。我只想关闭视图控制器,直到显示MainViewController。您可以添加一个检查在while loop中的
    mainViewController
    上,我不能这样做,Xcode不允许我这样做