gpt4 book ai didi

Cocoa NSOutlineView 和拖放

转载 作者:行者123 更新时间:2023-12-03 17:28:42 25 4
gpt4 key购买 nike

我最近在没有帐户的情况下启动了另一个线程,因此我使用帐户在此处重新发布问题,以便我可以编辑该程序的当前链接,以便其他用户可以关注此问题。我还更新了下面的代码。这是我原来的问题:

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

最佳答案

您没有响应 NSOutlineView 的拖动验证消息。

Your original code实现了tableView:validateDrop:proposedRow:proposeChildIndex:。正如我在这个问题上指出的那样,当您的表格 View 是大纲 View 时,这是错误的; NSOutlineView 不会发送表格 View 拖动验证消息,只会发送轮廓 View 拖动验证消息。

您已经将拖动验证方法更改为如下声明:

- (NSDragOperation)outlineView:(NSOutlineView*)view
validateDrop:(id <NSDraggingInfo>)info
proposedRow:(int)row
proposedChildIndex:(NSInteger)index

但实际上没有任何东西发送这样的消息。

请记住,NSOutlineView 很少处理行索引,因为这些索引可能会随着父行的展开和折叠而发生变化。相反,它处理“项目”,通常是模型对象。

因此,正确的验证方法是:

- (NSDragOperation)outlineView:(NSOutlineView*)view
validateDrop:(id <NSDraggingInfo>)info
proposedItem:(id)item
proposedChildIndex:(NSInteger)index

请注意选择器第三个组件的名称,以及随之而来的参数的类型和名称。

应用此更改后,您的数据源将验证丢弃。

关于Cocoa NSOutlineView 和拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2870803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com