2017-01-29 6 views
0

J'utilise M13Checkbox et il n'a pas envoyé aucun événement pour appeler mon action cibleaction personnalisée cible UIControll n'est pas appelé

let checkbox: M13Checkbox = { 
    let checkbox = M13Checkbox() 
    checkbox.cornerRadius = 1 
    checkbox.boxType = .square 
    checkbox.stateChangeAnimation = .bounce(.fill) 
    checkbox.tintColor = UIColor(red: 66/255, green: 172/255, blue: 232/255, alpha: 1) 
    checkbox.checkmarkLineWidth = 4 
    checkbox.addTarget(self, action: #selector(checkMarkAction(_ :)), for: .valueChanged) 
    return checkbox 
}() 

func checkMarkAction(_ sender: M13Checkbox) { 
    print("M13CheckboxAction") 
} 

Répondre

0

Je viens de déménager cette déclaration

checkbox.addTarget(self, action: #selector(checkMarkAction(_ :)), for: .valueChanged) 

dans la méthode awakeFromNib() et il fonctionne très bien

0

Je pense que vous devez référencer le sélecteur comme celui-ci: #selector(checkMarkAction:) selon la façon dont il apparaîtra à l'exécution Objective C. Le modèle d'action cible (et d'autres fonctions dynamiques dans Swift) est implémenté au-dessus du runtime Objective C, il recherche donc le nom de style Objective C de votre méthode Swift.

+0

J'obtiens l'erreur du compilateur rapide, je viens d'essayer de lancer un nouveau projet de test et faire la même chose, ça marche! Que puis-je faire pour résoudre un problème avec mon projet? – astrolka

+0

Quelle est l'erreur du compilateur? Et sur quelle ligne? –

+0

https://snag.gy/ZLJWqC.jpg – astrolka

0

Avez-vous essayé?

checkbox.addTarget(self, action: #selector(checkMarkAction), for: .valueChanged)