【问题标题】:Drag and drop without implementing tableView:objectValueForTableColumn:row: and numberOfRowsInTableView:拖放而不实现 tableView:objectValueForTableColumn:row: 和 numberOfRowsInTableView:
【发布时间】:2010-10-03 17:59:04
【问题描述】:

我有一个单列的 NSTableView,它通过绑定到核心数据实体的 NSArrayController 获取数据。数据馈送效果很好,我已经能够通过实现这些方法来实现拖放工作

– numberOfRowsInTableView:
– tableView:objectValueForTableColumn:row:

以及具体的拖拽方式

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

但是即使表格视图通过数组控制器提供数据,我真的必须实现前两种方法吗?我尝试注释掉我的实现,但随后我在控制台中收到错误消息“非法 NSTableView 数据源”。 NSTableViewDataSource 协议的文档说,如果应用程序使用 Cocoa 绑定,这些方法是可选的,所以很明显,我做错了。

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

【问题讨论】:

    标签: cocoa core-data cocoa-bindings


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-06
        • 2011-08-22
        相关资源
        最近更新 更多