如何关闭视图控制器并弹出到根视图控制器快速?



我有主TabbarController,它包含ViewController(A(。 从这个 A 使用导航控制器推送另一个 ViewController(B?(。推送视图控制器 从 B 推送另一个 ViewController(C( 使用 navigationController?。推送视图控制器 从C模式呈现另一个ViewController(D(。 从D使用点击按钮时,它应该关闭D和popToRootView控制器。

我在谷歌上搜索了类似的问题,但还没有找到解决方案。

我该怎么做?

创建协议

protocol YourDelegate: class {
func didDismiss()
}

在视图控制器 D 中,创建对协议的弱引用

weak var delegate: YourDelegate?

在视图控制器 C 中,在函数中遵守协议和 popToRootVC

extension ViewControllerC: YourDelegate {
func didDismiss() {
self.navigationController?.popToRootViewController()
}
}

同样在 ViewController C 中,将 ViewControllerD 的委托设置为显示 VC 的 self

//example:
let vcD = ViewControllerD()
vcD.delegate = self
self.navigationController.pushViewController(vcD, animated: true)

最后,在视图控制器 D 中,在关闭函数闭包中,调用委托函数

self.dismiss(animated: true) {
self.delegate?.didDismiss()
}

最新更新