swift NotificationCenter
ほかのコントローラーに何かの処理をお願いしたくなるときがあります。
その場合は二つの方法で実現可能です。
1.delegateを使用する
2.NotificationCenterを使用する
delegateのほうはかなり読みにくいのでおすすめできません。
それに比べNotificationCenterは読みやすいのでおすすめできます。
どちらも同じ考え、同じような動作なので後者を学ぶほうがよいと思いました。
ちなみにオブザーバーパターンと呼ばれるものらしいです。
NotificationCenterは、異なるViewController間のイベント通知を実現します。 また発信側と受信側が存在します。
通知名前空間の拡張
以下のように拡張します。 特にどのファイルに記載しないといけないとかはないです。
extension Notification.Name { static let notifyName = Notification.Name("notifyName") }
通知送り先
// 通知を送りたい箇所 NotificationCenter.default.post(name: .notifyName, object: nil)
通知を受け取りたい側
override func viewDidLoad() { super.viewDidLoad() /// NotificationCenterを登録 NotificationCenter.default.addObserver(self, selector: #selector(doSomething(notification:)), name: .notifyName, object: nil) }
このように記載するだけで notifyName通知が発行されたタイミングで、doSomething()が実行されるようになります。
参考資料