如何在不指定行位置的情况下拖放到NSOutlineView中?

时间:2014-05-13 17:25:46

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

我对Cocoa很陌生,我正在开发一个可以拖放到NSOutlineView的应用程序。

我已实施" outlineView:validateDrop:proposedItem:proposedChildIndex"和" outlineView:acceptDrop:item:childIndex:"使NSOutlineView目标丢弃的方法。它可以正常工作,除了它试图指定一个行/位置,其中应该删除来自不同NSOutlineView的项目。

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

我该如何做到这一点?

1 个答案:

答案 0 :(得分:3)

您将要使用NSOutlineView的{​​{3}}以编程方式设置要插入的索引。

要突出显示整个大纲视图,您可能需要尝试NSTableView的{​​{3}}将dropRow设置为-1,该文档说明了这一点:

  

为行传递值-1,并将NSTableViewDropOn作为操作传递,导致整个表视图突出显示而不是特定行。如果接收方显示的数据不允许用户删除特定行位置的项目,则此功能非常有用。

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