2017年1月28日土曜日

別のクラスのイベントの通知を受ける

iOSは内部でいろんなイベントが起こってるわけだが、別のクラスで起こったイベントの通知を受けることができる。
それがNSNotificationCenter。


  • アプリが起動したら
  • アプリがバックグラウンドからアクティブになったら
  • 別のクラスでhogeというメソッドが実行されたら

などなど。

書き方は以下のように。

NotificationCenter.default.addObserver(
     self,
   selector:#selector(textChanged),
     name: NSNotification.Name.UITextViewTextDidChange,

     object: self)

上記はUITextViewクラスのTextDidChangeメソッド(delegateメソッドだな)が発生したら、textChangeメソッドを実行しろと設定している。


NotificationCenter.default.addObserver(self,
      selector: #selector(ViewController.forActive),
      name: NSNotification.Name.UIApplicationDidBecomeActive,
      object: nil)

上記はアプリがバックグラウンドからアクティブになり、UIApplicationクラスのDidBecomeActiveが発生したらforActiveメソッドを実行しろと設定している。

object:がselfだったりnilだったりするって?
よくわかんねぇんだよ、ここw
たぶん呼ばれるメソッドや関数に渡すための引数じゃないかと思う。自分で調べてー。


なお同じNotificationでも、一定時間後とかに通知センターにiPhoneやiPadにメッセージを表示させるのはUILocalNotification

0 件のコメント:

コメントを投稿