I'm trying to decide which path to take for developing my Snow Leopard app. First, I should preface with the obvious differences:
NSTableView
can have multiple columns of data for representing different parts of the same "element" of data (a row) where NSCollectionView
can display a grid of data as well, but every row+column combo is its own element. For my purposes, assume I'm dealing with a single column.
As far as I can tell,
NSCollectionView
items areNSView
s which all must be of the same dimensions. Also, unlikeNSTableView
, collectionview items are copied to theNSCollectionView
instead of being provided as needed by adataSource
(I'm uncertain about this, please correct me if I'm wrong).NSTableView
usesNSCell
s if you decide to customize the display of rows. AsNSCell
isn't anNSResponder
, how does one handle events (if I wanted to add some sort of accessory to the cell, like how the Arrows in iTunes work (although, iTunes is Carbon). I've seen someNSCell
subclasses in IB which appear to be equivalents of theirNSControl
brethren, but what if I want to haveMySweetView
objects in anNSCell
?).Both seem to work about the same with respects to Bindings, correct?
Finally,
NSCollectionView
appears to play nicely with animation of its elements (for re-arranging items, or filtering them for example). CanNSTableView
do this with its rows?
Anything else I should consider?
- The difference here is that in a table view, every row is one item, and the columns show different aspects (properties) of that item. In a collection view, every row-column intersection is one item.
- I haven't done this, but try implementing
tableView:didClickTableColumn:
in your table view delegate. That method is new in 10.6. You would need to get[NSApp currentEvent]
, and probably pass it to a method in the column's cell. - With a table view, you bind the column; you don't bind the view (not to provide content, anyway; you do bind the view for things like selection indexes). With a collection view, there are no columns (see #1), so you always bind the view.
- No.
FWIW, NSTableView is a very old part of the AppKit, and it's a bit crufty.
If you're new to the platform, I'd recommend getting your head around NSCollectionView first.
来源:https://stackoverflow.com/questions/1655489/differences-between-nstableview-and-nscollectionview