拖放而不实现tableView:objectValueForTableColumn:row:和numberOfRowsInTableView:

时间:2010-10-03 17:59:04

标签: cocoa core-data cocoa-bindings

我有一个带有单个列的NSTableView,它通过绑定到Core Data实体的NSArrayController获取其数据。数据Feed非常有用,我可以通过实现方法来实现拖放工作

– numberOfRowsInTableView:
– tableView:objectValueForTableColumn:row:

以及特定的拖放方法

– tableView:acceptDrop:row:dropOperation:
– tableView:writeRowsWithIndexes:toPasteboard:

但即使tableview是通过数组控制器提供数据,我是否真的必须实现前两种方法?我尝试评论我的实现,但后来我在控制台中收到“非法NSTableView数据源”的错误。 NSTableViewDataSource协议的文档说如果应用程序使用Cocoa绑定,那么这些方法是可选的,所以很明显,我做错了。

问题:如何让tableview使用现有的绑定并仍然支持拖放?

2 个答案:

答案 0 :(得分:0)

我相信你确实需要实施它们来平息投诉。我相信当与Bindings一起使用时,这些数据源方法返回的值将被忽略。所以对于-numberOfRowsInTableView:你可以返回零; for -tableView:objectValueForTableColumn:row:你可以返回nil。

答案 1 :(得分:0)

您不需要实现这些方法。它看起来很不稳定,但我通过在Interface Builder中重新建立数据源连接来使它们沉默。我想也许如果你在添加绑定后添加数据源,它会使警告静音。