Swift为单选按钮创建自定义逻辑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift为单选按钮创建自定义逻辑相关的知识,希望对你有一定的参考价值。

我有四个自定义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
}

以上是关于Swift为单选按钮创建自定义逻辑的主要内容,如果未能解决你的问题,请参考以下文章

创建自定义单选按钮

如何使用 react-bootstrap 为单选按钮调用 onChange?

下拉转换为单选按钮,不再触发特定功能

将状态设置为单选按钮标签的值

片段中的按钮自定义视图

如何在 Laravel 7 中为单选按钮设置表单标签