Swift Class間で通知データを送るサンプル
Swiftでclass間でのデータのやりとりをしようと思って作ったサンプル。サンプルではカスタムセルと親となるTableViewの間でNotificationのやり取りを行っている。カスタムセル上にボタンを配置して、tapしたタイミングで親Tableの処理を実行するなんて事が可能になる。実装自体もシンプルなので、利用する場面は多いとおもう。
設定のポイントになるのは以下、
addObserver
まず、addObserverでnotificationの受け取りを設定する。
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(NoticeTableSandBox.callBack(_:)), name: "callBack", object: nil)
postNotificationName
postNotificationNameで設定したaddObserverに対してNoticeを送信する。とシンプルな方法でNotificationが可能となる。
NSNotificationCenter.defaultCenter().postNotificationName("callBack",object: message, userInfo: ["test": 999])
removeObserver
viewが消えるタイミングでremoveObserverしてselfに設定したNSNotificationを外す事が必要。 メモリリークの元となる。
override func viewWillDisappear(animated: Bool) { NSNotificationCenter.defaultCenter().removeObserver(self) }
作成したサンプル
ボタンをタップすると、親Tableの処理が実行されコンソールに結果が表示される。 gist.github.com