20

如果我的理解没有错的话,基于单元格的 NSTableView 和基于视图的 NSTableView 是同一类型的实例。那么,cpu如何区分cell-based和view-based呢?

据我所知,委托方法在基于单元格和基于视图之间是不同的。基于单元格的 NSTableView 需求tableView:objectValueForTableColumn:row:和基于视图的 NSTableView 需求tableView:viewForTableColumn:row:。有什么东西可以决定 NSTableView 的实例是基于单元格还是基于视图?

4

1 回答 1

24

除了以下描述,我建议您浏览 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TableView/Introduction/Introduction.html

在 OS X 版本 10.6 和更早版本中,表格视图中的每个单独的单元格都必须是 NSCell 的子类。这种方法在设计复杂的自定义单元时造成了限制,通常需要开发人员编写自己的 NSCell 子类。此外,提供动画(例如进度视图)非常困难。

在 OS X 10.7 版中,表格视图已经过重新设计,现在支持将视图用作单个单元格。这些被称为基于视图的表视图。基于视图的表格视图允许您在 Xcode 4.0 的 Interface Builder 部分中设计自定义单元格。它允许简单的设计时布局以及使更改动画和自定义绘图变得容易。与基于单元格的表视图一样,基于视图的表视图支持选择、列拖动和其他用户期望的表视图行为。唯一的区别是开发人员在设计和实现方面被赋予了更大的灵活性。

在 Interface Builder 中创建基于视图和基于单元格的表视图以及添加列使用相同的技术。在提供单个单元格、填充表格视图的内容和自定义表格视图外观时,应用程序代码中会出现差异。同样,两种实现之间的 Cocoa 绑定技术完全不同。

于 2013-03-25T22:38:41.073 回答