NSButtonCell vs NSButton

8

Ich habe die Apple-Dokumentation über NSButtons und Zellen gelesen und ich kann den Unterschied zwischen den beiden wirklich nicht verstehen. Zusätzlich zu dieser Komplexität sieht es so aus, als hätten beide eine große Überlappung von Methoden wie setTitle: usw. und ich bin mir nicht sicher, welche ich verwenden soll.

Kann jemand erklären, was die grundlegenden Unterschiede sind?

Danke, Danke Teja

    
Tejaswi Yerukalapudi 24.05.2011, 15:25
quelle

4 Antworten

8

Sie können sich ein Steuerelement als Vertreter einer Zelle vorstellen, oder "Agent". 1 Das Steuerelement ist ein NSView , was unter diesen Umständen zwei wichtige Dinge bedeutet. Erstens, dass es einen Bereich eines einzufügenden Fensters darstellt. Zweitens, dass es Benutzerinteraktion akzeptiert. 2

Die Steuerung macht jedoch selbst nicht viel. Die Zelle ist die Sache, die die ganze Arbeit erledigt - beachte zum Beispiel, dass Zellen sich in einen gegebenen Rahmen zeichnen können. Dies liegt in der Verantwortung einer Ansicht, aber die Steuerung verschiebt dies an die Zelle und stellt einfach einen Bereich zum Zeichnen bereit.

Wenn ein Benutzer auf ein Steuerelement klickt, empfängt das Steuerelement das Ereignis und ermittelt, was es bedeutet, aber die Arbeit, eine Aktion als Reaktion auf das Ereignis auszuführen, wird an die Zelle weitergegeben.

Wenn Sie sich die Dokumente für verschiedene Kontroll- / Zellpaare anschauen ( NSButton und NSButtonCell sind ein solches Paar), werden Sie die "Cover" -Methoden erwähnen. Dies bedeutet, dass das Steuerelement Methoden mit den gleichen Namen wie seine Gegenstückzelle hat, die einfach zu den Zellen aufrufen. Das ist die Quelle der Duplikation, die du erwähnt hast. Wenn Sie eine dieser Methoden verwenden möchten, rufen Sie sie auf dem Steuerelement auf - als öffentliches Gesicht des Paares wird sie die Zelle wahrscheinlich sowieso fragen.

Die beste von Apple zur Verfügung gestellte Beschreibung der Interaktion lautet " Wie Steuerelemente und Zellen interagieren " im Handbuch zu Steuerungs- und Zellprogrammierungsthemen.

1 Im Sinne eines Schauspielers mit einem Agenten, der Gigs beschafft. Dies ist nicht streng wahr von allen Ansichten; es ist tatsächlich eine Funktion von NSResponder , von der NSView erbt.

    
Josh Caswell 24.05.2011, 19:12
quelle
2

Auszug aus Cocoa Programming für OS X: Der Leitfaden für den Big Nerd Ranch

  

"Eine Zelle behandelt die Implementierungsdetails des Steuerelements. Für die   Zum größten Teil werden die Eigenschaften und Methoden der Zelle durch "abgedeckt"   identische Eigenschaften und Methoden in der entsprechenden Kontrolle. Zum   Wenn Sie beispielsweise den Titel eines Labels ändern, lautet die Zelle des Labels   macht die Arbeit, aber Sie interagieren mit dem StringValue des Labels   Eigentum.

     

Zellen haben eine lange Geschichte in Kakao. Sie waren ursprünglich   hinzugefügt, um Leistungsprobleme zu beheben: viele der grundlegenden Aufgaben von a   Kontrolle wurde an die Zelle übergeben, die könnte sie mehr tun   effizienter als die Kontrolle.

     

Mac-Computer sind viel leistungsfähiger   als sie damals waren, und Zellen sind zu einer Belastung geworden.   Apple hat erklärt, dass es Zellen veraltet, aber   Sie sehen sie immer noch in Ihrem Dokumentumriss und in älterem Code. "

    
onmyway133 19.01.2016 03:18
quelle
0

NSButtonCell ist eine Unterklasse von NSActionCell , die zur Implementierung der Benutzerschnittstellen von Drucktasten, Schaltern und Optionsfeldern verwendet wird. Es kann auch für jede andere Region einer Ansicht verwendet werden, die eine Nachricht an ein Ziel senden soll, wenn darauf geklickt wird. Die NSButton Unterklasse von NSControl verwendet eine einzelne NSButtonCell . Um Gruppen von Switches oder Optionsfeldern zu erstellen, verwenden Sie NSMatrix mit einem Satz von NSButtonCell s.

    
Sangram S. 28.01.2016 12:54
quelle
-2

NSButton Cell hat viel mehr cutomizable Optionen für Zeichnen und Verhalten. Die Unterschiede sind besser in den Klassen ersichtlich, von denen sie erben (NSButtonCell erbt von der ActionCell-Klasse, während NSButton von der NSControl-Klasse erbt.)

Sehen Sie sich die Dokumentation besser an:

Ссылка

Ссылка

Sie sollten auswählen, wie Sie die Schaltflächen zeichnen und wie sie sich verhalten sollen. Wenn es eine einfache Schaltfläche ist, verwenden Sie NSButton.

    
ephilip 24.05.2011 15:41
quelle

Tags und Links