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

发布于 2024-09-26 02:05:46 字数 569 浏览 5 评论 0原文

我有一个带有单列的 NSTableView,它通过绑定到核心数据实体的 NSArrayController 获取其数据。数据源工作得很好,我已经能够通过实现方法

– numberOfRowsInTableView:
来进行拖放操作 – tableView:objectValueForTableColumn:row:

以及具体的拖放方法

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

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

问题:如何使表格视图使用其现有绑定并仍然支持拖放?

I have an NSTableView with a single column, which gets its data through an NSArrayController bound to a Core Data entity. The data feed works great, and I have been able to get drag and drop working by implementing the methods

– numberOfRowsInTableView:
– tableView:objectValueForTableColumn:row:

as well as the specific drag and drop methods

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

But do I really have to implement the first two methods even though the tableview is fed data through the array controller? I tried commenting out my implementations, but then I get errors in the console saying "Illegal NSTableView data source". The documentation for the NSTableViewDataSource protocol says that the methods are optional if the application is using Cocoa bindings, so obviously, I'm doing something wrong.

The question: How do I make the tableview use its existing binding and still support drag and drop?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

檐上三寸雪 2024-10-03 02:05:46

我相信您确实需要实施这些措施来平息投诉。我相信与绑定一起使用时,这些数据源方法返回的值将被忽略。因此对于 -numberOfRowsInTableView: 可以返回零;对于 -tableView:objectValueForTableColumn:row: 您可以返回 nil。

I believe you do need to implement them to silence the complaint. I believe when used with Bindings the values returned by these data source methods are ignored. So for -numberOfRowsInTableView: you can return zero; for -tableView:objectValueForTableColumn:row: you can return nil.

半寸时光 2024-10-03 02:05:46

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

You do not need to implement these methods. It seems pretty shaky, but I silenced them by re-establishing the datasource connection in Interface Builder. I think perhaps if you add the datasource after you add bindings, it silences the warning.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文