【问题标题】:How to select one checkbox at a time in swift?如何快速一次选择一个复选框?
【发布时间】:2021-01-12 11:49:51
【问题描述】:

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

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

@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 连接。

【问题讨论】:

  • 首先,您应该在选中复选框时使用 State .selected (否则使用 .normal ),其次,我认为 setImage 调用是您仅在设置按钮时才进行的调用,而不是每次点击它。
  • 我正在使用@IBAction,所以每当我点击按钮时,它都会更改图像。

标签: ios swift checkbox


【解决方案1】:

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

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

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
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多