是-tableView:objectValueForTableColumn:row:必须?

时间:2014-03-25 05:42:10

标签: objective-c cocoa nstableview

NSTableViewDataSource中,概述说tableView:objectValueForTableColumn:row:是“必需的”。

在此旁边,它表示“{1}}是”仅基于单元格的表格“所必需的,这表明撰写此文档的人知道基于视图的表格,并且tableView:setObjectValue:forTableColumn:row:是必需的对于基于视图的表格。

方法tableView:objectValueForTableColumn:row:的文档本身说:

  

注意:除非您的应用程序使用Cocoa绑定向表视图提供数据,否则此方法是必需的。

但与其他方法不同的是,没有提到基于视图的表是不必要的。

然而,如果需要,我无法弄清楚它的用途。如果是这样,那么它与tableView:objectValueForTableColumn:row:之间的关系是什么,它还需要一个表,列和行,并返回要在那里显示的东西?

在一些简短的测试中,看起来NSTableView将使用-tableView:viewForTableColumn:row:(如果已定义),如果没有,它将使用-tableView:objectValueForTableColumn:row:。如果它们都被定义,它会同时调用它们,但只使用前者进行显示。

如果我正在编写基于视图的NSTableView,有没有理由实现这种方法?

1 个答案:

答案 0 :(得分:5)

,尽管所有文档都说它是强制性的"和#34;必需",NSTableView.h头文件说:

  

这种方法是基于Cell的"基于Cell的" TableView,对于" View Based"是可选的。的TableView。

如果您实施-tableView:viewForTableColumn:row:来完成显示数据所需的所有工作,那么您就不需要实施其他方法。

头文件还说明了为什么可以为基于视图的表实现它:

  

如果在后一种情况下实现,如果视图响应-setObjectValue:(例如NSControl和NSTableCellView),则该值将设置为给定行/列的视图。

这并不比在普通的基于视图的方法中实现它更容易,因此它看起来更像是一个升级兼容性功能,而不是你真正想要在新的中使用的东西。应用

相关问题