2015-03-02 5 views
0

Я создаю класс для управления флажками.Crash with Thread 1: signal SIGABRT

Это то, что я сделал:

import UIKit 

class CheckboxButton: UIButton { 

    //let checked = "" 
    //let unchecked = "" 

    let checked = "bubu" 
    let unchecked = "baba" 

    var isChecked:Bool = false{ 
     didSet{ 
      if isChecked == true { 
       self.setTitle(checked, forState: UIControlState.Normal) 
      }else{ 
       self.setTitle(unchecked, forState: UIControlState.Normal) 
      } 
     } 
    } 

    override func awakeFromNib() { 
     self.titleLabel?.font = UIFont(name: "FontAwesome", size: 20) 
     self.addTarget(self, action: "buttonClicked", forControlEvents: UIControlEvents.TouchUpInside) 
     self.isChecked = false 
    } 

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

Все это хорошо, но когда я нажимаю на кнопку, приложение просто падает с ошибкой Thread 1: signal SIGABRT

Есть ли что-то не так?

Спасибо за помощь!

ответ

0

С вашей функции действия принимает параметры func buttonClicked(sender:UIButton) действие вашей цели всегда должны содержать : в конце, так что все, что вам нужно сделать, это заменить надстройку целевую строку с этим

self.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside) 

Кроме того, ваша buttonClicked функция может упрощается следующим образом:

func buttonClicked(sender:UIButton){ 
    if(sender == self){ 
     isChecked = !isChecked 
    } 
} 
Смежные вопросы