UIButton 是 Swift 中一個很常見的元件,而通常UIButton 都會有點擊事件,我們如果用手動加點擊事件的話,就要一直使用 addtarget 這個函式,導致程式很不美觀。而我們其實可以使用 closure 來強化 UIButton 的,怎麼做呢?快來看一下喔!
![[Swift] 如何使用 closure 來製做點擊事件的 UIButton? 1 swift 1](https://www.inote.tw/wp-content/uploads/2020/02/swift-1.png)
我們先直接給大家看一下 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 了,非常簡單。