如何使大纲视图像桌面视图一样可重新订购?

时间:2009-05-24 07:14:28

标签: objective-c cocoa

如何使“大纲”视图能够像表视图一样重新排序(拖动以移动行的位置)。在我尝试拖动一行时,它只选择其他行。我怎样才能让它重新订购?

2 个答案:

答案 0 :(得分:6)

您必须实施drag'n drop stuff

这些是您必须在NSOutlineView数据源中实现的方法。

- (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id <NSDraggingInfo>)info proposedItem:(id)item proposedChildIndex:(int)index;
- (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id <NSDraggingInfo>)info item:(id)item childIndex:(int)index;

查看NSOutlineViewDataSource Protocol Reference了解详细信息。

您还需要为outlineView

注册拖动类型
[outlineView registerForDraggedTypes: [NSArray arrayWithObjects: NSStringPboardType, NSURLPboardType, NSFilenamesPboardType,NSFileContentsPboardType, nil]];

答案 1 :(得分:1)

如果您发现Apple文档很难,请尝试阅读有关重新订购的Jonathan's post

好的,如果这有点多,请尝试Apple的ADC网站上的AbstractTree示例代码。拖放方法在AppDelegate文件中突出显示。

我不希望听起来很粗鲁,但是你正在通过教程或查看参考资料吗?我问,因为只是请求您可以粘贴的代码对您没有帮助:您可以使用通用代码    只需要写下来。它需要写出来    针对您的具体情况。没有    了解这些,我们不能只是    为你写下你的方法。

尝试并实现AbstractTree中的示例拖放方法,如果仍然遇到问题,请尝试发布您编写的无效代码。