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

问题描述 投票:1回答:1

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

当用户点击C中的按钮时,我想要同时关闭C和B以返回A.如何同时解除B和C?

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

    let p = self.presentingViewController
    self.dismiss(animated: true) {
        p?.dismiss(animated: true, completion: nil)
    }
ios swift
1个回答
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)
    }

}

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

© www.soinside.com 2019 - 2024. All rights reserved.