Die Unterschiede zwischen den NSTableView und NSCollectionView
-
11-09-2019 - |
Frage
Ich versuche, welcher Weg zu entscheiden, für die Entwicklung meines Snow Leopard App zu nehmen. Erstens, ich sollte mit den offensichtlichen Unterschieden Vorwort:
NSTableView
kann, die verschiedenen Teile des gleichen „Elements“ von Daten mehr Spalten von Daten (eine Zeile), wo NSCollectionView
sowie ein Raster von Daten anzeigen kann, aber jede Zeile + Spalte Combo ist sein eigenes Element. Für meine Zwecke, nehme ich mit einer einzigen Spalte zu tun habe.
-
Soweit ich das beurteilen kann,
NSCollectionView
Artikel sindNSView
s, die alle die gleichen Abmessungen aufweisen müssen. Auch im Gegensatz zuNSTableView
sind Kollektion Elemente in demNSCollectionView
kopiert statt nach Bedarf durch einedataSource
vorgesehen ist (ich bin unsicher darüber, bitte korrigieren Sie mich, wenn ich falsch liege). -
NSTableView
verwendetNSCell
s wenn Sie die Anzeige der Zeilen anpassen entscheiden. AlsNSCell
keinNSResponder
ist, wie ein Griff Ereignis tut (wenn ich irgendeine Art von Zubehör für die Zelle, wie, wie die Pfeile in iTunes Arbeit hinzufügen wollte (obwohl iTunes ist Kohlenstoff). Ich habe einigeNSCell
Subklassen gesehen in IB, die Mittel ihrerNSControl
Brüder zu sein scheinen, aber was, wenn ichMySweetView
Objekte in einemNSCell
haben wollen?). -
Beide scheinen in etwa gleich mit Hinsicht Bindungen zu arbeiten, richtig?
-
Schließlich
NSCollectionView
erscheint mit Animation seiner Elemente gut zu spielen (zum erneuten Anordnen von Elementen, oder sich zum Beispiel Filterung). KannNSTableView
mit seinen Reihen tun?
Alles andere sollte ich beachten?
Lösung
- Der Unterschied hier ist, dass in einer Tabellenansicht ist jede Zeile ein Element, und die Spalten zeigen verschiedene Aspekte (Eigenschaften) dieses Elements. In einer Sammlung Ansicht ist jede Zeilen-Spalten-Kreuzung ein Element aus.
- Ich habe dies nicht getan, sondern versuchen,
tableView:didClickTableColumn:
in Ihrem Tabellenansicht Delegierten zu implementieren. Diese Methode ist neu in 10.6. Sie müßten[NSApp currentEvent]
bekommen, und es wahrscheinlich in der Spalte der Zelle an eine Methode übergeben. - Mit einer Tabellenansicht, binden Sie die Spalte; Sie binden nicht die Ansicht (nicht Inhalte, sowieso, Sie tun, um die Ansicht für Dinge wie Auswahl-Indizes binden). Mit einer Sammlung Ansicht gibt es keine Spalten (siehe # 1), so dass Sie immer die Ansicht binden.
- Nein.
Andere Tipps
FWIW, NSTableView ist ein sehr altes Teil des AppKit, und es ist ein bisschen crufty.
Wenn Sie auf die Plattform neu sind, würde ich empfehlen, den Kopf immer um NSCollectionView zuerst.