Cocoa 拖放而不实现tableView:objectValueForTableColumn:row:和numberOfRowsInTableView:
我有一个单列的NSTableView,它通过绑定到核心数据实体的NSArrayController获取数据。数据提要工作得很好,我已经能够通过实现这些方法来实现拖放工作Cocoa 拖放而不实现tableView:objectValueForTableColumn:row:和numberOfRowsInTableView:,cocoa,core-data,cocoa-bindings,Cocoa,Core Data,Cocoa Bindings,我有一个单列的NSTableView,它通过绑定到核心数据实体的NSArrayController获取数据。数据提要工作得很好,我已经能够通过实现这些方法来实现拖放工作 –numberofrowsintable视图: –tableView:objectValueForTableColumn:row: 以及具体的拖放方法 –tableView:acceptDrop:row:dropOperation: –tableView:writeRowsWithIndexes:toPasteboard: 但是
–numberofrowsintable视图:
–tableView:objectValueForTableColumn:row:
以及具体的拖放方法
–tableView:acceptDrop:row:dropOperation:
–tableView:writeRowsWithIndexes:toPasteboard:
但是,即使tableview通过阵列控制器提供数据,我真的必须实现前两种方法吗?我尝试对我的实现进行注释,但在控制台中出现错误,说“非法的NSTableView数据源”。NSTableViewDataSource协议的文档说明,如果应用程序使用Cocoa绑定,那么这些方法是可选的,所以很明显,我做错了什么
问题:如何使tableview使用其现有绑定并仍然支持拖放?我相信您确实需要实现它们来平息投诉。我相信当与绑定一起使用时,这些数据源方法返回的值会被忽略。因此对于-numberOfRowsInTableView:您可以返回零;for-tableView:objectValueForTableColumn:row:您可以返回nil。您不需要实现这些方法。这看起来很不稳定,但我通过在Interface Builder中重新建立数据源连接使他们沉默了。我认为,如果在添加绑定之后添加数据源,可能会使警告静音