[Swift实际操作]八、实用进阶-(7)使用通知的方法进行对象间的消息传递
生活随笔
收集整理的這篇文章主要介紹了
[Swift实际操作]八、实用进阶-(7)使用通知的方法进行对象间的消息传递
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文將為你演示,如何使用Notification Center進行消息的傳遞。
通知中心是一個調度消息通知的類,采用單例設計模式,實現數據傳遞,回調等功能。
首先打開自定義視圖的代碼文件(CustomView.swift)
然后在左側的項目導航區,打開視圖控制器的代碼文件(ViewController.swift)
1 import UIKit 2 3 class ViewController: UIViewController{ 4 //添加兩個自定義視圖類型的屬性 5 var nameField: CustomView! 6 var passwordField: CustomView! 7 //添加一個提交按鈕,當點擊該按鈕時,提交整個表單。 8 var submitButton: UIButton! 9 10 override func viewDidLoad(){ 11 super.viewDidLoad() 12 13 //初始化兩個整形常量,作為自定義視圖的寬度和高度 14 let wid = Int(self.view.frame.size.width) - 40 15 let hei = 40 16 17 //然后對第一個自定義視圖屬性進行初始化,并設置它的顯示區域 18 nameField = CustomView(frame: CGRect(x: 20,y: 80,with: wid,height: hei)) 19 20 //對第二個自定義視圖屬性進行初始化,并設置它的顯示區域 21 passwordField= CustomView(frame: CGRect(x: 20,y: 140,with: wid,height: hei)) 22 23 //初始化提交按鈕屬性,并設置它的顯示區域 24 submitButton = UIButton(frame: CGRect(x: 20,y: 240,with: wid,height: hei)) 25 //設置按鈕在正常狀態下的標題文字 26 submitButton.setTitle("Sumbit",for: .normal) 27 //給按鈕對象綁定點擊事件 28 submitButton.addTarget(self, 29 action: #selector(ViewController.submitForm(_:)), 30 for: .touchUpInside) 31 //設置按鈕對象的背景顏色為灰色 32 submitButton.backgroundColor = .gray 33 //并設置按鈕對象為不會響應交互事件的狀態 34 //只有當文本框中的內容都被檢驗成功時,該按鈕的狀態才會恢復為正常。 35 submitButton.isEnabled = false 36 //將按鈕對象添加到當前視圖控制器的根視圖 37 slef.view.addSubview(submitButton) 38 39 //獲得通知中心的單例對象,并通過addObserver,對指定名稱的通知進行監聽, 40 //當收到指定名稱的通知時,調用選擇器中的checkForm方法。 41 NotificationCenter.default.addObserver(self, 42 action: #selector(ViewController.checkForm(_:)), 43 name: NSNotification.Name(rawValue:"ceckFormNotification"), 44 object: nil) 45 } 46 47 //當點擊按鈕時在控制臺輸出一條日志語句,模擬表單的動作 48 @objc func submitForm(_ sender: UIButton) 49 { 50 print("summitForm...") 51 } 52 53 //接著添加一個方法,用來響應自定義視圖中的文本框的回車鍵被按下的事件 54 func checkForm(_ notification: Notification?) 55 { 56 //當鍵盤中的回車鍵被按下時,對兩個自定義視圖中的文本框進行檢驗 57 if self.nameField.textField.text != "" && self.passwordField.textField.text != "" 58 { 59 //當兩個文本框中的內容都不為空時,恢復提交按鈕的可交互性, 60 //并調整按鈕的背景顏色為橙色 61 self.submitButton.isEnabled = true 62 submitButton.backgroundColor = .orange 63 } 64 else 65 { 66 //當兩個文本框中的內容有一個不為空,或者全部為空時,設置按鈕不可進行點擊 67 //背景顏色改為灰色。 68 self.submitButton.isEnabled = false 69 self.submitButton.backgroundColor = .gray 70 } 71 } 72 73 //在該類文件中,添加一個析構方法,當該類的實例對象被銷毀時, 74 //及時移除通知中心,以免造成資源的浪費 75 deinit 76 { 77 NotificationCenter.default.removeObserver(self) 78 } 79 80 override func didReciveMemoryWarning(){ 81 super.didReceiveMemoryWarning() 82 83 } 84 }此時自定義視圖廣播了一條指定名稱的通知,并由控制器捕捉到了同名的通知。
由于兩個文本框中的內容不為空,所以按鈕對象的背景顏色變成了橙色。
轉載于:https://www.cnblogs.com/strengthen/p/9834598.html
總結
以上是生活随笔為你收集整理的[Swift实际操作]八、实用进阶-(7)使用通知的方法进行对象间的消息传递的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios 逆向编程(环境搭建)
- 下一篇: PGIS地图插件