##NSNotificationCenterを使っていい感じのタイミングでメソッドを呼び出す
ViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
let notificationCenter = NSNotificationCenter.defaultCenter()
//アプリがアクティブになったとき
notificationCenter.addObserver(
self,
selector: "functionName",
name:UIApplicationDidBecomeActiveNotification,
object: nil)
}
func functionName() {
//コードを書く
}
上の例はアプリがアクティブになったタイミングで呼ばれる。
notificationCenter.addObserverのnameによってタイミングが変わる。
##使えそうなタイミング
###アプリが終了する直前
let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(
self,
selector: "functionName:",
name:UIApplicationWillTerminateNotification,
object: nil)
###アプリがバックグラウンドになるとき
let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(
self,
selector: "functionName:",
name:UIApplicationDidEnterBackgroundNotification,
object: nil)
###アプリ起動直後
let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(
self,
selector: "functionName:",
name:UIApplicationDidFinishLaunchingNotification,
object: nil)
###デバイスの向きが変わる直前
let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(
self,
selector: "functionName:",
name:UIApplicationWillChangeStatusBarOrientationNotification,
object: nil)
通知の仕組みを使ってメソッドを呼び出している。
いろいろな場面で使えそう。
##好きなタイミングで呼び出す
notificationCenter.postNotificationName("name", object: self,
userInfo: nil)
let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(
self,
selector: "functionName",
name:"name",
object: nil)
なんども呼び出されることがあるのでfunctionNameのメソッドが終わったタイミングや画面終了のタイミングで
notificationCenter.removeObserver(self)
をやって消す。