首页 > 解决方案 > 如何快速一次选择一个复选框?

问题描述

我已经实现了四个复选框。现在,我想一次选择一个复选框,如果选择了其他复选框,我希望同时取消选择它。

这是我尝试过的,但它选择了所有复选框。

@IBAction func checkboxTapped(_ sender:UIButton){               
     if (sender.isSelected == false){
          sender.setImage(UIImage(named: "selected"), for: UIControl.State.normal)
          sender.isSelected = true;

     } else {
          sender.setImage(UIImage(named: "unselected"), for: UIControl.State.normal)
          sender.isSelected = false;
     }
}

在这里,我为所有复选框提供了相同的 IBAction 连接。

标签: iosswiftcheckbox

解决方案


首先创建一个设置函数,为按钮状态设置相应的图像。

(下面的所有代码都是在操场上创建的,所以它可能与你的有点不同)

private func setUp(button: UIButton) {
    button.setImage(UIImage.init(systemName: "checkmark.circle"), for: .selected)
    button.setImage(UIImage.init(systemName: "xmark.circle"), for: .normal)

    button.addTarget(self, action: #selector(checkboxTapped), for: .touchUpInside) //Not needed if you use a storyboard
}

然后从viewDidLoad您的视图控制器中调用它(我的按钮在一个数组中buttons

override func viewDidLoad() {
    super.viewDidLoad()

    buttons.forEach {
        setUp(button: $0)
        self.view.addSubview($0) //Not needed if you use a storyboard
    }
    buttons[0].isSelected = true

然后检查您的操作方法,以便正确更新所有按钮

@IBAction func checkboxTapped(_ sender:UIButton){
    for button in buttons {
        button.isSelected = false
    }

    sender.isSelected = true
}

如果您不使用数组,则将我的循环替换为对各个按钮的调用


推荐阅读