【问题标题】:How to implement checkbox in swift?如何快速实现复选框?
【发布时间】:2020-09-24 17:14:49
【问题描述】:

我正在使用此代码来实现复选框,但它不起作用。谁能告诉我哪里出错了?

@IBAction func tapped(_ sender: UIButton){
    if (checkBox.isSelected == false){

            checkBox.setImage(UIImage(named: "circle_radio_selected"), for: .normal)
            checkBox.isSelected = true;


        } else {
            checkBox.setImage(UIImage(named: "circle_radio_unselected"), for: .normal)
            checkBox.isSelected = false;
        }

【问题讨论】:

  • 发生了什么?方法被调用了吗?相同的if 测试总是相同的吗?
  • 方法没有被调用。
  • 你希望它在哪里被调用?你连接IBOutlet了吗?通过代码添加 addTarget?方法和按钮是怎么联系起来的?
  • 我已经用按钮连接了 IBOutlet 和 IBAction。希望在我点击按钮时调用它。
  • 它在哪里?它在 ViewController 中吗?故事板? UITableViewCell ?等等。你是如何实例化视图的?您是否有一个 IBOutlet somebutton 然后,在 viewDidLoad 或类似的东西中,如果您尝试打印它print(someButton),它是工作还是崩溃?它缺乏信息。

标签: swift checkbox


【解决方案1】:

执行此操作的简单方法是为不同的UIControl.State 分配图像。我不知道您是使用storyboard/xib 创建了这个按钮还是以编程方式创建了它。我会这样做:

private let checkbox: UIButton = { 
  let button = UIButton()
  button.setImage(UIImage(named: "circle_radio_selected"), for: .selected)
  button.setImage(UIImage(named: "circle_radio_unselected"), for: .normal)

  return button
}()

现在,一旦您的 IBAction 被调用:

我正在使用此代码来实现复选框,但它不起作用。谁能告诉我哪里出错了?

@IBAction func tapped(_ sender: UIButton){

 checkBox.isSelected = sender.isSelected

 // Now you have already set the images according to control state. Once it is selected it will change the image and when it is not selected it will become normal and select the other image 
 }

另外,最好创建一个常量文件并在其中添加这些named 字符串。

【讨论】:

    【解决方案2】:

    您可以在界面生成器中为normal/selected 状态设置图像,也可以通过编程方式进行设置,例如

    override func viewDidLoad() {
        super.viewDidLoad()
    
        checkBox.setImage(UIImage(named: "circle_radio_unselected"), for: .normal)
        checkBox.setImage(UIImage(named: "circle_radio_selected"), for: .selected)
    }
    

    然后你的点击功能可以轻松切换按钮状态。

    @IBAction func tapped(_ sender: UIButton) {
        checkBox.isSelected.toggle()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多