モケラ

Tech Sheets

mokelab

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引数は追加の情報ですが、ここでは追加情報なしとしています。

一覧に戻る