【问题标题】:How do I drag and drop into an NSOutlineView without specifying the row location?如何在不指定行位置的情况下拖放到 NSOutlineView 中?
【发布时间】:2014-05-13 17:25:46
【问题描述】:

我是 Cocoa 的新手,我正在开发一个可以从 NSOutlineView 拖放到 NSOutlineView 的应用程序。

我已经实现了“outlineView:validateDrop:proposedItem:proposedChildIndex”和“outlineView:acceptDrop:item:childIndex:”方法来使NSOutlineView 成为丢弃的目的地。它工作得很好,除了它试图指定一个行/位置,来自不同 NSOutlineView 的项目应该被删除。

我的应用程序实际上并不需要指定项目应该放在哪一行或上面;理想情况下,我希望在拖放到NSOutlineView 时突出显示整个NSOutlineView 框。行选择将以编程方式完成。

我怎样才能做到这一点?

【问题讨论】:

    标签: objective-c cocoa drag-and-drop nstableview nsoutlineview


    【解决方案1】:

    您将要使用NSOutlineViewsetDropItem:dropChildIndex: 以编程方式设置要插入的索引。

    为了突出显示整个大纲视图,您可能想尝试 NSTableViewsetDropRow:dropOperation: 将 dropRow 设置为 -1,文档中说:

    为行传递值 –1,并将 NSTableViewDropOn 作为操作会导致整个表视图被突出显示,而不是特定行。如果接收器显示的数据不允许用户在特定行位置放置项目,这将非常有用。

    NSOutlineView 继承自 NSTableView,因此如果 NSOutlineView 子类没有搞砸 NSTableView 的突出显示行为,这可能会起作用。

    【讨论】:

    • 它看起来像NSOutlineView,使用:setDropItem:nil dropChildIndex:-1 就可以了。感谢您的指导!
    • 在使用setDropItem 更改放置位置后应该在outlineView:validateDrop:proposedItem:proposedChildIndex 中返回什么我试图找到父节点,当用户拖动子节点时我试图将其重新定位到父项(如查找器应用程序)。但它不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2015-06-20
    相关资源
    最近更新 更多