NSNotificationCenterを使ってメッセージを飛ばしてみる
最終更新日:2015-10-17
NSNotificationCenterの基本的な使い方となる、メッセージを飛ばして受け取ってみましょう。
メッセージのObserverを登録する
NSNotificationCenterに飛んできたメッセージを監視するため、Observerを登録します。
class ViewController: UIViewController {
// 中略
override func viewWillAppear(animated: Bool) {
NSNotificationCenter.defaultCenter().addObserver(self, selector:"showNext:", name:"next", object:nil)
}
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
func showNext(notification: NSNotification) {
NSLog("showNext is called")
}
}
NSNotificationCenter.defaultCenter()でNSNotificationCenterオブジェクトを取得し、addObserver()で登録します。第1引数と第2引数でメッセージを受け取ったときに実行するメソッドを指定します。ここではViewControllerクラスのshowNext()を指定しています。第3引数はメッセージの名前を指定します。
メッセージを飛ばす
Observerの登録ができたら、次はメッセージを飛ばしてみましょう。
class ViewController: UIViewController {
// 中略
@IBAction func buttonClicked(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("next", object: nil)
}
}
メッセージを飛ばすには、NSNotificationCenterオブジェクトのpostNotificationName()を使います。第1引数にはメッセージの名前を指定します。Observer登録時に指定した名前と一致するものすべてが実行されます。第2引数は追加の情報ですが、ここでは追加情報なしとしています。