解雇多个控制器后显示警报

时间:2020-08-16 18:33:24

标签: ios swift swift4 swift5

我有以下视图控制器流程:

Controller A -> Controller B -> Controller C -> Controller D

在控制器D中,当我关闭它时,它也将控制器D,C和B都关闭了,以便再次显示控制器A。现在,我想做的是在关闭控制器D时在控制器A中显示一个警报控制器。

我知道我可以创建一个委托/协议,以便在关闭控制器D时调用特定的函数,但这仅在两个控制器之间而不是四个控制器之间有效。

那么最好的解决方案是什么?我唯一想做的另一件事是创建一个SQL表,将showAlertController的值更新为true,然后在Controller A中检查该值是否为true,但这似乎是一种不好的做法有点黑。

2 个答案:

答案 0 :(得分:3)

一种实现此目的的方法是使用NotificationCenter 从控制器D向控制器A发送通知。

通常,控制器A将监听控制器D将发送的完成/关闭通知。

NotificationCenter Documentation

答案 1 :(得分:2)

使用NotificationCenter,基本上需要三个步骤。

  • 关闭D视图控制器时发布通知
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)
  • 在showAlert函数中做任何您想做的事
@objc func showAlert() {
    //show your alert view controller
}

希望这会有所帮助:)

相关问题