斯威夫特:拖拽和放入NSOutlineView

时间:2017-02-08 08:52:15

标签: swift macos drag-and-drop nsoutlineview

我正在使用Swift构建一个NSOutlineView。我有视图,现在我开始拖放以在视图中移动项目。我使用This作为我的起点。我拖动工作,点击并拖动轮廓,但我无法使掉落部分工作;我没有看到水平标记,当我跌落时,我只得到一声哔哔声。我错过了一些明显的东西,但我不能为我的生活看到它。

这是我的NSOutlineViewDelegate的代码:

func outlineView(_ outlineView: NSOutlineView, pasteboardWriterForItem item: Any) -> NSPasteboardWriting? {

    let pp = NSPasteboardItem()

    // working as expected here
    if let fi = item as? FileItem {
        pp.setString( fi.Path, forType: "public.text" )

        print( "pb write \(fi.Name)")

    } else {
        print( "pb write, not a file item \(item)")
    }

    return pp
}

func outlineView(_ outlineView: NSOutlineView, validateDrop info: NSDraggingInfo, proposedItem item: Any?, proposedChildIndex index: Int) -> NSDragOperation {

    print( "validate: \(item)")
    return NSDragOperation.move
    //
}

func outlineView(_ outlineView: NSOutlineView, acceptDrop info: NSDraggingInfo, item: Any?, childIndex index: Int) -> Bool {

    print( "accept drop: \(item)")
    return true
}

我在ViewDidLoad()中注册了拖动类型:

OutlineViewOutlet.register( forDraggedTypes: ["public.txt"] )

感谢任何想法,谢谢。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题;寄存器中的错误类型()。这有效:

OutlineViewOutlet.register( forDraggedTypes: ["public.data"] )