解散多个控制器

时间:2018-06-24 14:15:42

标签: ios swift uiviewcontroller dismiss

如何返回几个控制器? 图片是一个例子

Example

3 个答案:

答案 0 :(得分:1)

如果您想返回到根视图控制器,可以使用:

self.navigationController?.popToRootViewController(animated: true)

如果您不想回到根视图控制器,可以使用另一种方法。

在当前的视图控制器中:

guard let navigationController = self.navigationController else {return}
        for controller in navigationController.viewControllers {
            if let neededVC = controller as? SomeViewController {
                navigationController.popToViewController(neededVC, animated: true)
            }
        }

答案 1 :(得分:0)

假设两个视图控制器都在同一导航堆栈中,则可以使用导航控制器的功能popToViewController(_:animated:)

navigationController?.popToViewController(theViewControllerInstanceYouWantToGetBackTo, animated: true)

https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621871-poptoviewcontroller

在特定情况下,您还可以使用popToRootViewController(animated:),因为-根据您的屏幕截图-您想弹出导航控制器的初始视图控制器。

https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621855-poptorootviewcontroller

navigationController?.popToRootViewController(animated: true)

答案 2 :(得分:0)

如果您使用segue,请使用'Unwind segue'

为此,在您的“视图控制器”中编写给定代码

@IBAction func unwindToThisViewController(segue: UIStoryboardSegue) {



}

在B_viewcontroller中,在按下按钮时调用“ Unwind segue”。与self.performSegue(withIdentifier: "YourSegueForA_VeiwController", sender: nil)

借助Unwind segue,您还可以发送数据