在Swift中实现复选框

时间:2017-02-15 09:17:34

标签: swift uibutton swift3

我正在尝试在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

3 个答案:

答案 0 :(得分:2)

试试这个 -

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
 }

}

答案 1 :(得分:0)

制作复选框的最安全方法:

UIButton添加到ViewController

将两张图片添加到Project:1.checked.png,2.un-checked.png

checkedun-checked图片设为按钮背景或按钮图片

将按钮文字设置为""

相信我,图书馆会让你感到困惑。

答案 2 :(得分:0)

我最近还要制作一个复选框,我使用了一个cocoapod,而不是制作我自己的。它可以让你选择一切,包括颜色,动画,形状和大小!也许这会有所帮助:

BEM CHECKBOX

安装它只需要5分钟,并且可以在您的应用上运行。