25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Swift 5]NotificationCenterでデータ(値)の渡し方

Last updated at Posted at 2020-01-06

#はじめに
VC間通信にNotificationCenterを使って、データを一緒に送信する方法を調べたので、
備忘録として書いときます。

#NotificationCenterとuserInfoの使い方

####使用する通知を作成
まずは通知で使用する通知名をextensionで拡張します。

extension Notification.Name {
   static let hogeName = Notification.Name("hogeName")
}

####通知送信
任意のタイミングで通知を送信します。

SenderVC

NotificationCenter.default.post(name: .hogeName, object: nil, userInfo: ["fugaData": "hogehoge"])

この際に userInfo: ["fugaData": "hogehoge"])
の部分で任意のデータを一緒に送信することができます。

####通知受信
受信側のviewDidLoadなどで通知の登録を行ってください。
受信した際に実行する処理をselectorで指定します。

ReciverVC
override func viewDidLoad() {
   super.viewDidLoad()
   //受信設定
   NotificationCenter.default.addObserver(self, selector: #selector(piyoFunc(notification:)), name: .hogeName, object: nil)
}

@objc func piyoFunc(notification: NSNotification?) {
   let data = notification?.userInfo!["fugaData"]
   print(data) // hogehoge が出力される
}

#さいごに
NitificationCenterはいろんなイベントのやりとりができるので便利です。
parentVCやchildVCを取得してからデータを送信したりしている方は、
ぜひともこの方法を試してみてください!

25
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?