2015-03-26 1 views
1

Le code suivant fonctionne parfaitement dans mon bac à sable:état NSButton ne change pas

@IBAction func filterClicked(sender: NSButton) { 
    println(sender.state) 
    if let clickEvent = NSApp.currentEvent! { 
    if Int(clickEvent.modifierFlags.rawValue) & Int(NSEventModifierFlags.ControlKeyMask.rawValue) != 0 { 
     if sender.state == NSOffState { 
     sender.state == NSOnState 
     } 
    } 
    } 
    println(sender.state) 
} 

Le bouton connecté est un bouton On-Off. Donc quand c'est allumé et que je clique dessus, ça reste allumé.

Malheureusement dans mon application où j'ai vraiment besoin de cela, cela ne fonctionne pas. J'ai vérifié que dans les applications sandbox et prod les fixations/paramètres sont identiques pour les deux boutons. Le débogueur montre que

 sender.state == NSOnState 

est simplement non effectuée. state reste NSOffState. Ronger mon clavier n'a pas aidé. Une idée?

Répondre

3

Vous n'attribuez aucune valeur à l'état du bouton.

sender.state = NSOnState 
+0

OMG! J'ai envoyé cela comme rapport de bogue que le compilateur devrait émettre un avertissement dans ce cas. Merci beaucoup! –

0

Je sais que cela a déjà une réponse acceptée, mais le partage de mon scénario dans le cas où il trébuche quelqu'un d'autre:

J'ai eu le même problème où je ne pouvais pas définir par programmation l'état pour mon bouton une cellule de vue de table personnalisée. Mon problème, c'est que j'essayais de définir l'état quand ma table a d'abord créé la cellule. Au lieu de cela, j'ai dû m'assurer de remplacer la méthode de mise en page dans ma cellule personnalisée et définir l'état là.

1

changement d'état d'un bouton radio (Vérifier l'état) pour 4 rapide:

@IBOutlet weak var checkedButton: NSButton! 

checkedButton.state = NSControl.StateValue.off // State = off 

checkedButton.state = NSControl.StateValue.on // State = on 
+0

Ils changent la syntaxe plus souvent que leurs sous-vêtements: - / –