2017-02-15 5 views
1

Я пытаюсь реализовать флажок в 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 

ответ

0

Safest способ сделать флажок:

Добавить UIButton в ViewController

Добавьте два изображения в проекте: 1.checked.png, 2.un-checked.png

Set checked или un-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 минут, чтобы установить и он работает в вашем приложении.

Смежные вопросы