2

我正在尝试决定开发我的 Snow Leopard 应用程序的路径。首先,我应该先介绍明显的区别:

NSTableView可以有多列数据来表示数据(一行)的同一“元素”的不同部分,其中NSCollectionView也可以显示数据网格,但每行+列组合都是它自己的元素。出于我的目的,假设我正在处理一个列。

  1. 据我所知,NSCollectionView物品都是NSViews ,它们都必须具有相同的尺寸。此外,与 不同NSTableView,collectionview 项目被复制到NSCollectionView而不是根据需要由 a 提供dataSource(我对此不确定,如果我错了,请纠正我)。

  2. NSTableViewNSCell如果您决定自定义行的显示,则使用s。NSCell不是一个,如何处理事件(如果NSResponder我想向单元格添加某种附件,例如 iTunes 中的箭头如何工作(尽管 iTunes 是 Carbon)。我NSCell在 IB 中看到了一些出现的子类是他们NSControl兄弟的等价物,但是如果我想MySweetView在一个对象中有对象NSCell呢?)。

  3. 两者在 Bindings 方面的工作似乎大致相同,对吗?

  4. 最后,NSCollectionView似乎可以很好地使用其元素的动画(例如用于重新排列项目或过滤它们)。可以NSTableView用它的行做到这一点吗?

还有什么我应该考虑的吗?

4

2 回答 2

3
  1. 这里的区别在于,在表格视图中,每一行都是一个项目,而列显示该项目的不同方面(属性)。在集合视图中,每个行列交集都是一项。
  2. 我还没有这样做,但尝试tableView:didClickTableColumn:在您的表视图委托中实现。该方法是 10.6 中的新方法。您需要 get [NSApp currentEvent],并可能将其传递给列单元格中的方法。
  3. 使用表格视图,您可以绑定列;您不绑定视图(无论如何,不​​提供内容;您确实为选择索引之类的东西绑定了视图)。对于集合视图,没有列(参见 #1),因此您始终绑定视图。
  4. 不。
于 2009-11-01T00:02:25.723 回答
2

FWIW,NSTableView 是 AppKit 的一个非常古老的部分,它有点笨拙。

如果您是该平台的新手,我建议您先了解 NSCollectionView。

于 2009-11-01T11:29:36.220 回答