[英]Swift create custom logic for radio button
我有四個自定義UIButton
,我應用了按鈕圖像無線電(檢查和檢查)。 四個按鈕我有單獨的動作方法我可以輕松更改圖像但如果我檢查第一個按鈕另外三個按鈕需要取消選中 。 它應該像單選按鈕一樣反應。
在這里,我的代碼下面
@IBAction func first_scheme(_ sender: Any) {
bRec = !bRec
if (bRec == true) {
firstscheme_button.setImage(UIImage(named: "uncheck.png"), for: .normal)
} else {
firstscheme_button.setImage(UIImage(named: "check.png"), for: .normal)
}
}
如果您總是有4個單選按鈕,則可以將它們放入陣列中。
var radioButtons: [ButtonType] = [r1, r2, r3, r4]
您現在可以在循環中訪問該按鈕,並將另一個按鈕的值設置為“未選中”。
func setRadioButtons(button: ButtonType) {
for radioButton in radioButtons {
if radioButton !== button {
radioButton.setImage(UIImage(named: "uncheck.png"), for: .normal)
}
}
}
@IBAction func first_scheme(_ sender: Any) {
bRec = !bRec
if bRec {
firstscheme_button.setImage(UIImage(named: "uncheck.png"), for: .normal)
} else {
firstscheme_button.setImage(UIImage(named: "check.png"), for: .normal)
}
setRadioButtons(button: sender)
}
替代方法
如果您只想檢查單擊按鈕並取消選中其他按鈕,則邏輯更簡單。
為所有單選按鈕創建公共操作 ,並為所有UIButton創建IBOutletcollection ,
var radioButtons: [UIButton] = [r1, r2, r3, r4]
最后執行常用方法為
func setRadioButtons(button: UIButton) {
for getradioButton in radioButtons {
getradioButton.setImage(UIImage(named: "uncheck.png"), for: .normal)
}
button.setImage(UIImage(named: "check.png"), for: .normal)
}
我建議您使用簡單tag
屬性在按鈕上設置標記,然后將其從通用偵聽器中保存。
//first button selected
var lastTag = 0
@IBAction func first_scheme(_ sender: UIButton) {
buttonArray[lastTag].setImage(UIImage(named: "uncheck.png"), for: .normal)
lastTag = sender.tag
sender.setImage(UIImage(named: "check.png"), for: .normal)
}
您可以在自定義UIButton中覆蓋isSelected變量,並根據isSelected值設置圖像。
class customButton: UIButton {
override var isSelected: Bool {
willSet {
self.setImage(UIImage.init(named: "checked"), for: .normal)
}
didSet {
self.setImage(UIImage.init(named: "unchecked"), for: .normal)
}
}
}
為四個自定義UIButton制作了4個 IBOutlets和4個 IBAction。 您可以輕松選擇和取消選擇按鈕並應用自定義行為。
@IBAction func firstButtonAction(_ sender: Any) {
if let button = sender as? customButton {
button.isSelected = !button.isSelected
}
secondButton.isSelected = false
thirdButton.isSelected = false
fourthButton.isSelected = false
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.