2014-03-25 18 views
6

NSTableViewDataSource中,概述說明tableView:objectValueForTableColumn:row:是「必需的」。is -tableView:objectValueForTableColumn:row:mandatory?

就在此旁邊,它說tableView:setObjectValue:forTableColumn:row:是「僅基於單元格的表格」所必需的,這表明撰寫此文檔的人員知道基於視圖的表格,並且基於視圖的表格需要tableView:objectValueForTableColumn:row:

的方法tableView:objectValueForTableColumn:row:本身的文件說:

注意:除非你的應用程序正在使用可可綁定表視圖提供數據的這種方法是強制性的。

但不同於其它方法未提到的是不必要的基於視圖的表。

然而,如果需要的話,我無法弄清楚它的用途。如果是這樣的話,它和-tableView:viewForTableColumn:row:之間的關係是什麼,它還需要一個表,列和行,並返回要顯示的東西?

在一些簡短的測試中,看起來NSTableView將使用-tableView:objectValueForTableColumn:row:(如果已定義),否則將使用-tableView:viewForTableColumn:row:。如果它們都被定義了,它會把它們都叫做它們,但是隻用前者來顯示。

如果我正在編寫一個基於視圖的NSTableView,是否有任何理由來實現此方法?

回答

5

沒有,儘管所有的文件說,這是「強制」和「必需」的,則NSTableView.h頭文件說:

是必需的「基於細胞」的TableView這種方法並且對於「基於視圖」的表格視圖是可選的。

如果您實施-tableView:viewForTableColumn:row:來完成顯示數據的所有必要工作,則無需實施其他方法。

頭文件還表示,爲什麼你會實現它的基於視圖的表:

如果在後一種情況下實現的,該值將在如果視圖中給定的行/列設置爲視圖響應-setObjectValue :(如NSControl和NSTableCellView)。

這似乎並不不僅僅是實現它在普通視圖爲基礎的方法,雖然變得更容易,所以它看起來更像是一個比什麼升級兼容功能,您預期的要在一個新的應用程序中使用。