首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NSCollectionView中拖放

在NSCollectionView中拖放
EN

Stack Overflow用户
提问于 2010-08-27 23:41:10
回答 2查看 2.2K关注 0票数 6

我有一个NSCollectionView,它被正确配置为根据在NSArrayController中找到的内容显示核心数据实体。这些名为MyManagedType的核心数据实体被定义为包括一个int32索引号"indexNumber“以保持其有序,以及二进制NSData *myData。我也可以通过单击项目来选择它们,但我不能“单击并拖动”它们。我只需要能够一次选择一个项目(最好是实际上)。

我通过将文件从finder拖放到NSCollectionView来填充NSArrayController。它通过获取文件名来接受被删除的文件。然后我打开文件,进行处理,填充myData,获得一个新的indexNumber (indexNumber =持久化存储中的MyManagedType实体的数量),并将该NSManagedObject *插入到我的持久化存储中。这很好用。

我想补充的两件事是,我迷路了。

1)我希望能够在NSCollectionView中单击并抓取一个项目,将其拖到视图(或窗口)之外,然后将其拖放到“扑扑”状态,并将其从我的持久性存储中删除。

2)我希望能够单击并抓取NSCollectionView中的项目,将其拖动到我的NSCollectionView中的另一个位置,然后将其放置以重新排序我的indexNumbers。

这里的主要问题是,我不知道要设置什么拖放类型来处理--在我现有的代码中,它是文件名,但现在它是什么?我已经读过几次类参考,我理解很多方法的作用,但我就是不能理解我是如何实现#1和#2的。

EN

回答 2

Stack Overflow用户

发布于 2010-09-01 02:15:59

我想在NSOutlineView上使用拖放功能,我发现Jonathan Dann's source code非常有用。

您可能希望将其签出并尝试将其修改为与NSCollectionView一起使用。

票数 1
EN

Stack Overflow用户

发布于 2011-03-25 22:16:01

对于表视图,奇怪的是,视图本身的数据拖动类型是您设置的任意字符串,如下所示:

代码语言:javascript
复制
#define arbitraryDataTypeForInterRowDragging @"arbitraryDataTypeForInterRowDragging". 

然后在acceptDrop委托方法中使用它,如下所示:

代码语言:javascript
复制
NSData *rowData = [pboard dataForType:arbitraryDataTypeForInterRowDragging]; 

NSCollectionView委托方法似乎遵循相同的模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3585820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档