【问题标题】:NSOutlineView with Drag and DropNSOutlineView 拖放
【发布时间】:2010-05-17 18:24:55
【问题描述】:

我在这里阅读了关于 Outlineviews 和 DND 的另一篇文章,但我无法让我的程序运行。这篇文章的底部是我的项目的 zip 链接。它非常基本,只有一个大纲视图和按钮。我希望它接收放置在上面的文本文件,但我的代码或连接有问题。我尝试遵循 Apple 的 NSOutline 拖放示例代码,但我遗漏了一些东西。 1 个不同之处是我的程序是基于文档的程序,而他们的示例不是。我将文件的所有者设置为接收委托操作,因为这是我处理拖放的代码以及按钮操作的位置。它可能是一个简单的错误,所以有人可以看看它并告诉我我做错了什么吗?

【问题讨论】:

  • 请使用 Dropbox、Google Docs 或 MobileMe iDisk 或 DVCS 托管服务(例如 Bitbucket 或 GitHub)来托管源代码。 “请等待 x 分钟下载” = 我不想打扰。
  • 我认为您希望用户能够将文本文件直接拖放到大纲视图中,而不是放在您的 Dock 磁贴上?具体来说,您的文件所有者是什么对象?是大纲视图数据源吗?是大纲视图委托吗?它是一个通过 Bindings 为 NSTreeController 提供数据的对象吗?
  • 我已投票关闭 this 问题作为重复问题,即使它是两者中较旧的问题,因为正如提问者在较新的问题中所说,他有他发布此问题时尚未创建帐户,因此他无法使用更多信息更新此问题。较新的问题是他使用新帐户创建的问题,因此是他可以更新的问题;因此,它是应该站立的。

标签: cocoa drag-and-drop nsoutlineview


【解决方案1】:

您实现了表格视图数据源拖拽接收方法,而不是大纲视图数据源拖拽接收方法。大纲视图是一种表格视图,但它专门使用大纲视图数据源协议;表视图数据源协议适用于表视图数据源,不适用于大纲视图数据源。

请参阅the NSOutlineViewDataSource protocol,详细了解您需要在数据源中实现什么。

注意:您需要在您的数据源中实现这些方法,该数据源目前不是您的文档。我不知道你为什么这样做;通常,文档(主要作为控制器的角色)拥有模型,因此它应该是视图的数据源——数据源。

我建议将 OutlineDataSource 类合并到 MyDocument 类中,并将表格视图的拖动接收方法更改为它们的大纲视图对应方法。

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多