如何关闭 viewcontroller 并弹出到 root viewcontroller swift?
How to dismiss viewcontroller and pop to root viewcontroller swift?
我有主要的 TabbarController,其中包含 ViewController(A)。
从这个 A 推另一个 ViewController(B) 使用 navigationController?.pushViewController
从 B 推另一个 ViewController(C) 使用 navigationController?.pushViewController
从 C 模态地呈现另一个 ViewController(D)。
从 D 使用点击按钮时,它应该关闭 D 和 popToRootViewController .
我用谷歌搜索了类似的问题,但还没有找到解决方案。
我该怎么做?
创建协议
protocol YourDelegate: class {
func didDismiss()
}
在ViewControllerD中,创建对协议的弱引用
weak var delegate: YourDelegate?
在ViewControllerC中,在函数
中符合协议和popToRootVC
extension ViewControllerC: YourDelegate {
func didDismiss() {
self.navigationController?.popToRootViewController()
}
}
同样在 ViewController C 中,将 ViewControllerD 的委托设置为您呈现 VC
的自我
//example:
let vcD = ViewControllerD()
vcD.delegate = self
self.navigationController.pushViewController(vcD, animated: true)
最后,在ViewControllerD中,在你的dismiss函数闭包中,调用delegate函数
self.dismiss(animated: true) {
self.delegate?.didDismiss()
}
我有主要的 TabbarController,其中包含 ViewController(A)。 从这个 A 推另一个 ViewController(B) 使用 navigationController?.pushViewController 从 B 推另一个 ViewController(C) 使用 navigationController?.pushViewController 从 C 模态地呈现另一个 ViewController(D)。 从 D 使用点击按钮时,它应该关闭 D 和 popToRootViewController .
我用谷歌搜索了类似的问题,但还没有找到解决方案。
我该怎么做?
创建协议
protocol YourDelegate: class {
func didDismiss()
}
在ViewControllerD中,创建对协议的弱引用
weak var delegate: YourDelegate?
在ViewControllerC中,在函数
中符合协议和popToRootVCextension ViewControllerC: YourDelegate {
func didDismiss() {
self.navigationController?.popToRootViewController()
}
}
同样在 ViewController C 中,将 ViewControllerD 的委托设置为您呈现 VC
的自我//example:
let vcD = ViewControllerD()
vcD.delegate = self
self.navigationController.pushViewController(vcD, animated: true)
最后,在ViewControllerD中,在你的dismiss函数闭包中,调用delegate函数
self.dismiss(animated: true) {
self.delegate?.didDismiss()
}