2017-02-15 59 views
1

我想在Swift中实现复选框。我使用其他post的答案开始。 首先,我在故事板中创建了一个按钮,并为其提供了类复选框。之后,我创建了类复选框。目前看起来像这样。我曾经从另一篇文章做过一些调整,因为他使用了不同版本的swift。在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 

回答

0
,使复选框

最保险的办法:

添加UIButtonViewController

添加两个图像到项目:1.checked.png,2.un-checked.png

设置为checkedun-checked图像作为按钮背景或按钮图像

将按钮文本设置为""

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

+0

但是,如何选择或取消选择复选框呢? – fabioha

+0

@fabioha在他的例子中,你只需点击按钮,因为你已经创建了图像,因为它被选中/取消选中。 –

+0

所以,只要按钮被点击,你就会改变图片?听起来很简单。 – fabioha

1

试试这个 -

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 
} 

} 
+0

为我工作,谢谢 – fabioha

0

我最近也不得不做出一个复选框,我用一个cocoapod对于这一点,而不是让我自己。它可以让你选择一切,包括颜色,动画,形状和大小!也许这可以帮助:

BEM CHECKBOX

这真的只需要5分钟安装,有工作在你的应用程序。