我有以下视图控制器流程:
Controller A -> Controller B -> Controller C -> Controller D
在控制器D中,当我关闭它时,它也将控制器D,C和B都关闭了,以便再次显示控制器A。现在,我想做的是在关闭控制器D时在控制器A中显示一个警报控制器。
我知道我可以创建一个委托/协议,以便在关闭控制器D时调用特定的函数,但这仅在两个控制器之间而不是四个控制器之间有效。
那么最好的解决方案是什么?我唯一想做的另一件事是创建一个SQL表,将showAlertController
的值更新为true
,然后在Controller A中检查该值是否为true,但这似乎是一种不好的做法有点黑。
答案 0 :(得分:3)
一种实现此目的的方法是使用NotificationCenter
从控制器D向控制器A发送通知。
通常,控制器A将监听控制器D将发送的完成/关闭通知。
答案 1 :(得分:2)
使用NotificationCenter,基本上需要三个步骤。
extension Notification.Name {
static let Ddismissed = Notification.Name("Ddismissed")
}
// use below code when you want to dismiss D, C, B
dismiss(animated: true) {
NotificationCenter.default.post(name: .Ddismissed, object: nil)
}
// add this code to view controller A's viewDidLoad func
NotificationCenter.default.addObserver(self, selector: #selector(showAlert), name: .Ddismissed, object: nil)
@objc func showAlert() {
//show your alert view controller
}
希望这会有所帮助:)