2017-02-15 84 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分鐘安裝,有工作在你的應用程序。