iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
Mobile Development

ios前端開發學習系列 第 15

【Day15】認識什麼是 self? Delegate? (以調色盤為例)

  • 分享至 

  • xImage
  •  

Delegate

允許一個物件將某些任務或功能委託(Delegate)給另一個物件來執行。
舉例來說,假設你有一個 UITableView 和一個 UIViewController。你不會希望 UITableView 自己決定有多少(Rows)或每一行要顯示什麼內容。這會讓 UITableView 變得過於複雜和難以重用。相反地,你會希望有一個「代理」物件來告訴 UITableView 它應該如何表現。

self

在 Swift 中,每當你在類別(Class)或結構(Struct)的方法(Method)裡面使用 self,你就是在參考該類別或結構的當前實例。

class MainViewController: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {

        // MARK: - IBOutlet
        @IBOutlet weak var redValue: UITextField!       // 紅色數值的文字欄位
        @IBOutlet weak var greenValue: UITextField!     // 綠色數值的文字欄位
        @IBOutlet weak var blueValue: UITextField!      // 藍色數值的文字欄位

        @IBOutlet weak var colorPicker: UIPickerView!   // 顏色選擇器

        ...

        // 設置 delegates
        func setupDelegates() {
            redValue.delegate = self
            greenValue.delegate = self
            blueValue.delegate = self
            colorPicker.delegate = self
            colorPicker.dataSource = self
        }
...

self 用在 setupDelegates() 方法中,設置多個控制元件(如 redValue, greenValue, blueValue 和 colorPicker)的代理(Delegate)為 MainViewController 本身。

這意味著,MainViewController 類別也實現了 UITextFieldDelegate 和 UIPickerViewDelegate,以及 UIPickerViewDataSource 協議(Protocols)。因此,當這些控制元件觸發特定的事件時(例如,使用者輸入文字或選擇了顏色選擇器中的某個項目),對應的代理方法將會在 MainViewController 的實例中被呼叫。

這個 self 讓類別的實例能夠「自我參考」,使它可以更動或存取它自己的屬性和方法。這在 iOS 開發中是很常見的模式,特別是在設置 UI 控制元件的行為和代理時。

總結

基本上介紹了一些基礎用法但有些功能還不夠詳細,大家如果想看更詳細的內容,歡迎在本地端克隆

https://github.com/Boost-Jay/Palette--swift.git
如果這檔案對你有所幫助可以給我顆星星感謝你!


上一篇
【Day14】認識如何使用 IBAction (以調色盤為例)
下一篇
【Day16】認識如何使用podfile (以留言板為例)
系列文
ios前端開發學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言