OngaLog

最近GOが楽しくて、

Swift Class間で通知データを送るサンプル

Swiftでclass間でのデータのやりとりをしようと思って作ったサンプル。サンプルではカスタムセルと親となるTableViewの間でNotificationのやり取りを行っている。カスタムセル上にボタンを配置して、tapしたタイミングで親Tableの処理を実行するなんて事が可能になる。実装自体もシンプルなので、利用する場面は多いとおもう。

f:id:loosefingers:20160807211510p:plain

設定のポイントになるのは以下、

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