什么是基于单元格的NSTableView和基于视图的NSTableView的区别?

20
如果我的理解没有错误,基于单元格的NSTableView和基于视图的NSTableView都是同一类型的实例。那么,CPU如何区分基于单元格和基于视图的表格?
据我所知,基于单元格的NSTableView和基于视图的NSTableView之间的委托方法是不同的。基于单元格的NSTableView需要使用tableView:objectValueForTableColumn:row:,而基于视图的NSTableView需要使用tableView:viewForTableColumn:row:。是否有任何决定NSTableView实例行为基于单元格还是基于视图的内容?
1个回答

26
除了以下描述,我建议您阅读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绑定技术完全不同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接