【问题标题】:NSOutlineView drag and drop: how to prevent parent being dropped on one of its childrenNSOutlineView 拖放:如何防止父级被拖放到它的一个子级上
【发布时间】:2011-10-29 19:21:01
【问题描述】:
我正在为我的 NSOutlineView 设置拖放功能,并且我想防止父母被丢到他们的孩子身上。父级和子级都是 Group 实体。我知道我需要在 outlineView:validatedrop 方法中执行此操作。我想我需要用 NSPredictate 创建一个 NSFetchRequest 来获取父级的所有子级,但我不知道谓词应该是什么。
编辑:它应该是递归的,所以它也应该得到孩子的孩子,如果有的话。
有什么建议吗?
【问题讨论】:
标签:
cocoa
core-data
drag-and-drop
nsoutlineview
【解决方案1】:
- (NSDragOperation)outlineView:(NSOutlineView *)ov validateDrop:
(id <NSDraggingInfo>)info proposedItem:(id)item proposedChildIndex:(NSInteger)childIndex;
在上面这个方法中,你可以管理拖动项可以接受或不能接受。请回NSDragOperationNone,表示防止掉线。
【解决方案2】:
已解决:
我没有深入研究核心数据对象,而是按照 Apple 的 sample code 来查看 NSTreeNodes。
绑定负责更新底层核心数据模型。再说一次,如果它看起来太复杂,那可能不是正确的方法。