如何一次解除两个模态视图控制器?

时间:2017-12-29 18:48:47

标签: ios swift

我在导航堆栈中有一个视图控制器A. A模态地呈现另一个控制器B,其又可以模态地呈现另一个控制器C.

当用户点击C中的按钮时我想要同时关闭C和B以返回A. 我怎样才能同时解雇B和C?

以下代码有效,但这样做是否安全?

    let p = self.presentingViewController
    self.dismiss(animated: true) {
        p?.dismiss(animated: true, completion: nil)
    }

1 个答案:

答案 0 :(得分:0)

使最顶层的视图控制器成为属性。确保BC设置最顶层的视图控制器。

class C: UIViewController {

    var topmostViewController: UIViewController?

    @IBAction func dismiss(_ sender: Any) {
        // If topmostViewController was not set, then assume
        // the presenting view controller is to be dismissed.
        (topmostViewController ?? presentingViewController)?.dismiss(animated: true)
    }

}

这为您提供了一个很大的灵活性,即哪个视图控制器可以解散。