在NSTableViewDataSource中,概述说tableView:objectValueForTableColumn:row:
是“必需的”。
在此旁边,它表示“{1}}是”仅基于单元格的表格“所必需的,这表明撰写此文档的人知道基于视图的表格,并且tableView:setObjectValue:forTableColumn:row:
是必需的对于基于视图的表格。
方法tableView:objectValueForTableColumn:row:
的文档本身说:
注意:除非您的应用程序使用Cocoa绑定向表视图提供数据,否则此方法是必需的。
但与其他方法不同的是,没有提到基于视图的表是不必要的。
然而,如果需要,我无法弄清楚它的用途。如果是这样,那么它与tableView:objectValueForTableColumn:row:
之间的关系是什么,它还需要一个表,列和行,并返回要在那里显示的东西?
在一些简短的测试中,看起来NSTableView将使用-tableView:viewForTableColumn:row:
(如果已定义),如果没有,它将使用-tableView:objectValueForTableColumn:row:
。如果它们都被定义,它会同时调用它们,但只使用前者进行显示。
如果我正在编写基于视图的NSTableView,有没有理由实现这种方法?
答案 0 :(得分:5)
否,尽管所有文档都说它是强制性的"和#34;必需",NSTableView.h头文件说:
这种方法是基于Cell的"基于Cell的" TableView,对于" View Based"是可选的。的TableView。
如果您实施-tableView:viewForTableColumn:row:
来完成显示数据所需的所有工作,那么您就不需要实施其他方法。
头文件还说明了为什么可以为基于视图的表实现它:
如果在后一种情况下实现,如果视图响应-setObjectValue:(例如NSControl和NSTableCellView),则该值将设置为给定行/列的视图。
这并不比在普通的基于视图的方法中实现它更容易,因此它看起来更像是一个升级兼容性功能,而不是你真正想要在新的中使用的东西。应用