2017-02-08 16 views
0

Я строю NSOutlineView с помощью Swift. У меня есть вид на месте, и теперь я начинаю перетаскивать, чтобы перемещать объекты вокруг в представлении. Я использую This в качестве отправной точки. Я перетащил работу, нажимаю и перетаскиваю контур, но я не могу заставить работу над кадром работать; Я не вижу горизонтального маркера, и я получаю только звуковой сигнал, когда я падаю. Мне не хватает чего-то очевидного, но я не могу, чтобы жизнь меня видела.Swift: перетаскивание в NSOutlineView

Это мой d & d код из моего 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"]) 

Любые мысли оценили, спасибо.

ответ

0

Отвечая на мой вопрос; неправильный тип в регистре(). Эта работа:

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