2016-04-18 17 views
0

Nach Big Nerd Ranch Buch "Cocoa Programmierung für OS X" alte Art der Verwendung von NSMatrix wird veraltet sein. Neuer Weg besteht darin, mehrere Instanzen von NSButton mit dem Stil Radio zu verwenden. Jeder der NSButton aus derselben Funkgruppe sollte einer gemeinsamen @IBAction-Methode zugewiesen werden. Und verwenden Sie die Eigenschaft tag, um sie in dieser Aktionsmethode zu unterscheiden.Gruppe von NSButton als Radio Button-Gruppe

Frage ist: Wie aktuell überprüft NSButton von Radio-Gruppe Benachrichtigung, dass eine andere Schaltfläche geklickt wurde, und aktuelle Schaltfläche sollte seinen Status zu deaktivieren ändern?

Ich weiß über Frage: How to create NSRadioButton Group in Xcode 7 OSX aber meine Frage ist nicht darüber, wie man es erstellt. Frage: Wie erreicht die Nachricht andere NSButton-Ansichten? Weil Action in der Windows-Controller-Klasse ausgeführt wird, nicht in den Ansichten.

Bild ist wie folgt vor:

 
     --> NSButton sends @IBAction ViewController.radioButtonPressed 
Window -| 
     --> NSButton sends @IBAction ViewController.radioButtonPressed 

Aber wie dieser zwei Informationsaustausch Zustand Instanzen untereinander? Es scheint, dass es nur eine Einwegkommunikation zwischen ihnen und ViewController gibt? Wie ein Knopf weiß, dass ein anderer gedrückt wurde?

+0

Erstellen Sie eine Variable, um den aktuellen Status (Tag oder Verweis auf die Schaltfläche) beizubehalten. Wenn sich der Status ändert, setzen Sie die Schaltfläche für den aktuellen Status auf OFF, stellen Sie den Sender auf ON und behalten Sie den Sender als aktuellen Status. – vadian

+0

Vielen Dank für Ihre Hilfe. Ich habe Radio Buttons erstellt, die ganz gut funktionieren, aber ich möchte verstehen, wie das unter der Haube funktioniert. Wie zwei separate Ansichten Informationen über ihren Status erhalten, während sie nur Nachrichten an die ViewController-Klasse senden können. –

Antwort

1

Die Schaltfläche befindet sich in der Ansichtshierarchie, sodass sie nach ihrer superview fragen kann. Dann kann es die Superviews subviews iterieren, suchen Sie nach NSButton des Typs Optionsfeld und vergleichen Sie action Selektor, um eine Gruppe zu erstellen.

Verwandte Themen