我试图在swift中实现一个复选框。我用另一个post的答案开始。
首先,我在故事板中创建了一个按钮,并给了它“类”复选框。之后,我创建了类复选框。现在看起来是这样的。我从另一个职位做了一些调整,因为他用的是不同版本的swift。

    class checkbox: UIButton {

    //Images
   let checkedImage = UIImage(named: "selected")! as UIImage
   let uncheckedImage = UIImage(named: "rectangle")! as UIImage

    // Bool property
    var isChecked: Bool = false {
        didSet{
            if isChecked == true {
                self.setImage(checkedImage, for: .normal)
            } else {
                self.setImage(uncheckedImage, for: .normal)
            }
        }
    }

    func buttonClicked(sender: UIButton) {
        if (sender == self) {
            if self.isChecked == true
            {
                self.isChecked = false
            }
            else
            {
                self.isChecked = true
            }
        }
    }


    override func awakeFromNib() {
        self.addTarget(self, action: Selector(("buttonClicked:")),for:UIControlEvents.touchUpInside)
        self.isChecked = false
    }

  }

但是现在,当我单击复选框时,我总是在appdelegate中得到以下错误。
terminating with uncaught exception of type NSException

最佳答案

试试这个-

class CheckBoxButton: UIButton {

override func awakeFromNib() {
    self.setImage(UIImage(named:"selected"), for: .selected)
    self.setImage(UIImage(named:"rectangle"), for: .normal)
    self.addTarget(self, action: #selector(CheckBoxButton.buttonClicked(_:)), for: .touchUpInside)
}

func buttonClicked(_ sender: UIButton) {
    self.isSelected = !self.isSelected
 }

}

10-04 16:27
查看更多