2013-03-25 12 views
14

Wenn mein Verständnis nicht falsch ist, ist zellbasiertes NSTableView und view-based NSTableView dieselbe Art von Instanz. Dann, wie CPU unterscheiden zellbasierte und view-basierte?Was unterscheidet zellbasierte NSTableView- und view-basierte NSTableView?

Soweit ich weiß, ist die Delegate-Methode zwischen Zelle und View-basiert. Zellbasiertes NSTableView benötigt tableView:objectValueForTableColumn:row: und View-based NSTableView benötigt tableView:viewForTableColumn:row:. Gibt es irgendetwas, was entscheidet, dass sich die Instanz von NSTableView zellenbasiert oder sichtbasiert verhält?

Antwort

18

Neben folgende Beschreibung würde ich vorschlagen, Sie http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TableView/Introduction/Introduction.html

In OS X Version 10.6 und früher jede einzelne Zelle durch gehen in einer Tabellenansicht eine Unterklasse von NSCell sein war nicht erforderlich. Dieser Ansatz hat zu Einschränkungen bei der Entwicklung komplexer benutzerdefinierter Zellen geführt, bei denen der Entwickler normalerweise seine eigene NSCell-Unterklasse schreiben muss. Darüber hinaus war das Bereitstellen von Animationen wie Fortschrittsansichten äußerst schwierig.

In OS X Version 10.7 wurden Tabellenansichten neu gestaltet und unterstützen jetzt die Verwendung von Ansichten als einzelne Zellen. Diese werden als view-basierte Tabellenansichten bezeichnet. View-basierte Tabellenansichten ermöglichen das Entwerfen benutzerdefinierter Zellen im Interface Builder von Xcode 4.0. Es ermöglicht eine einfache Gestaltung des Layouts und vereinfacht das Animieren von Änderungen und das Anpassen des Zeichnens. Wie bei zellbasierten Tabellenansichten unterstützen Ansichten auf Tabellenbasis die Auswahl, das Ziehen von Spalten und andere vom Benutzer erwartete Tabellenansichtsverhalten. Der einzige Unterschied besteht darin, dass der Entwickler viel mehr Flexibilität in Design und Implementierung erhält.

Das Erstellen von sichtbasierten und zellenbasierten Tabellensichten und das Hinzufügen von Spalten verwenden die gleichen Techniken in Interface Builder. Die Unterschiede treten in Ihrem Anwendungscode auf, wenn Sie die einzelnen Zellen bereitstellen, den Inhalt der Tabellenansicht auffüllen und die Darstellung der Tabellenansicht anpassen. Außerdem sind die Cocoa-Binding-Techniken zwischen den beiden Implementierungen völlig verschieden.