IOS Swift開發基礎 通知

2021-09-19 08:49:04 字數 2858 閱讀 1936

nsnotificationcenter是專門供程式中不同類間的訊息通訊的。使用它為我們**降低耦合。

// addobserver 4個引數分別是:接受者物件,接受者處理函式,訊息名稱,傳送者物件(通常設為nil)

nsnotificationcenter.defaultcenter().addobserver(self, selector: #selector(downloadimage), name: "notificationname", object: nil)

nsnotificationcenter.defaultcenter().removeobserver(self)
func downloadimage(notification: nsnotification)
nsnotificationcenter.defaultcenter().postnotificationname("notificationname",

object: self, userinfo: ["val1":"msg1", "val2" : 123])

let operationqueue = nsoperationqueue.mainqueue()

// queue必須是處理佇列nsoperationqueue,usingblock是響應訊息的函式閉包

nsnotificationcenter.defaultcenter().addobserverforname("notificationname2", object: nil, queue: operationqueue, usingblock: )

系統會傳送很多訊息,如:

nsnotificationcenter.defaultcenter().addobserver(self, selector: #selector(onkeyboardwillshow), name: uikeyboardwillshownotification, object: nil)     

nsnotificationcenter.defaultcenter().addobserver(self, selector: #selector(onkeyboardwillhide), name: uikeyboardwillhidenotification, object: nil)

傳送不帶資料的訊息:

nsnotificationcenter.defaultcenter().postnotificationname("notificationname2", object: self)
let settings = uiusernotificationsettings(fortypes: [.sound, .alert, .badge], categories: nil)
這樣,安裝後首次進入應用系統會提示是否允許接收通知。

let notification = uilocalnotification()

notification.firedate = nsdate().datebyaddingtimeinterval(3) // 延遲3秒傳送訊息

notification.timezone = nstimezone.localtimezone()

notification.repeatinterval = nscalendarunit.minute // 設定每分鐘重複一次

notification.alerttitle = "this is a notification title"

notification.alertbody = "this is a notification body"

notification.alertaction = "ok"

notification.soundname = uilocalnotificationdefaultsoundname // 預設提示音

// 使用userinfo資料

var userinfo:[nsobject : anyobject] = [nsobject : anyobject]()

userinfo["klocalnotificationid"] = "localnotificationid"

userinfo["key"] = "attention please"

notification.userinfo = userinfo

// 如果不延時就現在傳送

print("didreceivelocalnotification \(notification.alerttitle)")

let userinfo = notification.userinfo!

let title = userinfo["key"] as! string

let alert = uialertcontroller(title: title, message: notification.alertbody, preferredstyle: uialertcontrollerstyle.alert)

alert.title = title

alert.message = notification.alertbody

let okaction = uialertaction(title: "ok!!!", style: uialertactionstyle.default, handler: nil)

alert.addaction(okaction)

self.window?.rootviewcontroller?.presentviewcontroller(alert, animated: true, completion: nil)

ios swift開發資源整理

更新週期 每週五更新 3.中文文件 4.demo 5.開發工具推薦 6.國內外開發 論壇 7.技術部落格推薦 8.書籍推薦 9.第三方框架推薦 10.第三方發布平台 11.terminal指令 適用於xcode 12.經典文章推薦,歡迎投稿 13.ios開發問題集錦,歡迎投稿 new new 普利茅...

iOS Swift 模組練習 swift基礎學習

swift專案練習 1swift專案練習2 推薦 swift學習使用知識 軟體 0.swift中的巨集定義 使用方法代替巨集 一 檢視 控制項 1 uiimageview uiimage 2 uiview uilabel uibutton button let butt uibutton frame...

iOS開發42 iOS Swift簡單介紹

swift是蘋果公司於2014年wwdc 蘋果開發者大會 發布的新開發語言。可以與objective c共同執行與mac os 和ios平台,用於搭建基於蘋果平台的應用程式。2015年的wwdc開發者大會上,蘋果公司推出了swift2.0版本,並且swift完全開源。雖然語法上給人產生了指令碼語言的...