use*_*855 7 cocoa objective-c nstableview
在NSTableViewDataSource中,概述说这tableView:objectValueForTableColumn:row:
是"必需的".
紧挨着这一点,它表示tableView:setObjectValue:forTableColumn:row:
"仅基于单元格的表"是必需的,这表明编写此文档的人知道基于视图的表,这tableView:objectValueForTableColumn:row:
是基于视图的表所必需的.
方法tableView:objectValueForTableColumn:row:
本身的文档说:
注意:除非您的应用程序使用Cocoa绑定向表视图提供数据,否则此方法是必需的.
但与其他方法不同的是,没有提到基于视图的表是不必要的.
然而,如果需要,我无法弄清楚它的用途.如果是这样,那个和-tableView:viewForTableColumn:row:
它之间的关系是什么,它还需要一个表,一列和一行,并返回要在那里显示的东西?
在一些简短的测试中,看起来NSTableView将-tableView:objectValueForTableColumn:row:
在定义时使用,如果没有,它将使用-tableView:viewForTableColumn:row:
.如果它们都被定义,它会同时调用它们,但只使用前者进行显示.
如果我正在编写基于视图的NSTableView,是否有任何理由来实现此方法?
不,尽管所有文档都说"强制"和"必需",但NSTableView.h头文件说:
"基于单元格"的TableView需要此方法,对于"基于视图"的TableView,此方法是可选的.
如果您执行-tableView:viewForTableColumn:row:
所有必要的工作来显示数据,则无需实现其他方法.
头文件还说明了为什么可以为基于视图的表实现它:
如果在后一种情况下实现,如果视图响应-setObjectValue:(例如NSControl和NSTableCellView),则该值将设置为给定行/列的视图.
这似乎并不比在普通的基于视图的方法中实现它更容易,因此它似乎更像是一个升级兼容性功能,而不是您实际想要在新应用程序中使用的功能.