我在导航堆栈中有一个视图控制器A. A模态地呈现另一个控制器B,其又可以模态地呈现另一个控制器C.
当用户点击C中的按钮时我想要同时关闭C和B以返回A. 我怎样才能同时解雇B和C?
以下代码有效,但这样做是否安全?
let p = self.presentingViewController
self.dismiss(animated: true) {
p?.dismiss(animated: true, completion: nil)
}
答案 0 :(得分:0)
使最顶层的视图控制器成为属性。确保B
为C
设置最顶层的视图控制器。
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)
}
}
这为您提供了一个很大的灵活性,即哪个视图控制器可以解散。