[Swift] 如何使用 closure 來製做點擊事件的 UIButton?

分享給朋友:

UIButton 是 Swift 中一個很常見的元件,而通常 UIButton 都會有點擊事件,我們如果用手動加點擊事件的話,就要一直使用 addtarget 這個函式,導致程式很不美觀。而我們其實可以使用 closure 來強化 UIButton 的,怎麼做呢?快來看一下喔!

swift 1

我們先直接給大家看一下  Code,再來講解。

import Foundation
 
class TouchButton: UIButton {
 
    var touchUpEvent: ((UIButton) -> ())?
 
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        setupButton()
    }
 
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupButton()
    }
 
    override func awakeFromNib() {
        super.awakeFromNib()
        setupButton()
    }
 
    @objc private func touchUp(_ sender: UIButton) {
        self.touchUpEvent?(sender)
    }
 
    private func setupButton() {
        addTarget(self, action: #selector(touchUp(_:)), for: [.touchUpInside])
    }
}

這段程式碼其實就是使用一個自定義的 UIButton,然後再利用 closure 來回傳點擊事件至外層。所以如果你的外層有一個自定義的 TouchButton,你可以這樣使用。

let button = TouchButton()
button.touchUpEvent = { [weak self] btn in
     print("HI")
}

這樣一來按下按鈕,就會自動印出 Hi 了,非常簡單。

分享給朋友:

發表迴響