
記得設定元件的 Connection 再來處裡的 Sent Events
// 當 switch 的狀態改變時,這個方法會被觸發
@IBAction func didChangeSwitchValue(_ sender: UISwitch) {
    // 更新顏色顯示視圖
    updateColorView()
    // 更新控制元件(尤其是 sliders)的狀態
    updateControls()
}

// 當任何一個 slider 的值改變時,這個方法會被觸發
@IBAction func SliderChange(_ sender: UISlider) {
    var type: ColorType!  // 用於儲存顏色類型(紅、綠、藍)
    var textField: UITextField!  // 用於儲存對應的 textField
    // 根據觸發這個方法的 slider,設定顏色類型和對應的 textField
    switch sender {
    case redSlider:
        type = .red
        textField = redValue
    case greenSlider:
        type = .green
        textField = greenValue
    case blueSlider:
        type = .blue
        textField = blueValue
    default:
        break
    }
    // 獲取對應的顏色和 slider 值
    let color = type.color
    let value = sender.value
    // 更新 slider 和 textField 的狀態
    updateSliderAndTextField(slider: sender,
                             textField: textField,
                             value: value,
                             color: color)
    // 更新顯示的顏色
    updateColorView()
}

// 當 textField 中的文本改變時,這個方法會被觸發
@IBAction func TextChange(_ sender: UITextField) {
    // 更新所有顏色的 slider 和 textField
    textFieldDidEndEditing(redValue)
    textFieldDidEndEditing(greenValue)
    textFieldDidEndEditing(blueValue)
    // 更新顯示的顏色
    updateColorView()
}
前面事先讓大家能稍微明白個大概,接下來我們來仔細講解 IBAction 的用途
@IBAction func buttonClicked() {
    // 執行的內容
}
@IBAction func buttonClicked(_ sender: UIButton) {
    if sender.isSelected {
        // 執行的內容
    }
}
@IBAction func buttonClicked(_ sender: any, forEvent event: UIEvent) {
    // 執行的內容
}
只會被一種類型的 UI 元件使用,選擇該具體類型會更好。
會被多種不同類型的 UI 元件使用,或者你希望保持更高的靈活性,則選擇 Any。