什么使基于单元格的NSTableView和基于视图的NSTableView有所区别?

时间:2013-03-25 20:04:47

标签: objective-c nstableview

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

据我所知,委托方法在基于单元格和基于视图之间是不同的。 基于单元的NSTableView需要tableView:objectValueForTableColumn:row:,基于视图的NSTableView需要tableView:viewForTableColumn:row:。 是否有任何决定NSTableView实例基于单元格或基于视图的行为?

1 个答案:

答案 0 :(得分:22)

除了以下描述,我建议你通过   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绑定技术在两种实现之间完全不同。