7月 18, 2017

『Swift』用NotificationCenter的Observer來達到觸發函式的目的


若想在兩個Swift檔案中互相傳遞訊號

這裡有一個簡單的方法,就是加入observer去做監聽,當有post發出時就會收到!


步驟一:
在一個Swift檔案中加入observer,其中要設定的是這個監聽器要聽哪一個訊號,以及聽到訊號要觸發的函式(注意!這個函式的引數為notification:)

NotificationCenter.default.addObserver(self, selector: #selector(想觸發的函式(notification:)), name: NSNotification.Name("監聽訊號名稱") , object: nil)


步驟二:
在另一個Swift檔案中加入post,其中要設定的就是訊號

NotificationCenter.default.post(name: Notification.Name("監聽訊號名稱"), object: nil)

說明:
也就是當post被執行的時候,原先加入的observer就會聽到post,進而做出該觸發函式!


簡易範例:
observer.swift
NotificationCenter.default.addObserver(self, selector: #selector(isDataGet(notification:)), name: NSNotification.Name("GET_DATA") , object: nil)


@objc func isDataGet(notification: NSNotification) {
    print("isdataget!")
}

post.swift
NotificationCenter.default.post(name: Notification.Name("GET_DATA"), object: nil)

說明:
一旦post.swift執行到post那一行,他就會發出GET_DATA
此時相對應的observer就會做出指定觸發函式isDataGet


我是Andy Huang,大家下次見!

沒有留言:

Related Posts Plugin for WordPress, Blogger...