【问题标题】:Show alert after dismissing multiple controllers关闭多个控制器后显示警报
【发布时间】:2020-12-05 23:38:54
【问题描述】:

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

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

在控制器 D 中,当我关闭它时,它会关闭控制器 D、C 和 B,以便再次显示控制器 A。现在,我要做的是在控制器 D 被关闭时在控制器 A 中显示一个警报控制器。

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

那么这里最好的解决方案是什么?我唯一想做的另一件事是创建一个 SQL 表,在其中将showAlertController 的值更新为true,然后检查控制器 A 中的值是否为真,但这似乎是不好的做法,而且有点 hacky .

【问题讨论】:

    标签: ios swift swift4 swift5


    【解决方案1】:

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

    一般来说,控制器 A 会监听控制器 D 发送的完成/关闭通知。

    NotificationCenter Documentation

    【讨论】:

      【解决方案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 func 中做任何你想做的事情
      @objc func showAlert() {
          //show your alert view controller
      }
      

      希望这会有所帮助:)

      【讨论】:

        猜你喜欢
        • 2020-10-02
        • 2018-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多