2017-02-08 2 views
0

Ich baue eine NSOutlineView mit Swift. Ich habe die Ansicht an Ort und Stelle und jetzt beginne ich per Drag and Drop Elemente in der Ansicht zu verschieben. Ich verwende This als meinen Ausgangspunkt. Ich habe Drag-Funktion, klicke und ziehe um den Umriss, aber ich kann den Drop-Part nicht arbeiten lassen; Ich sehe den horizontalen Marker nicht und bekomme nur einen Piepton, wenn ich ihn fallen lasse. Ich vermisse etwas Offensichtliches, aber ich kann es nicht für das Leben von mir sehen.Swift: Drag & Drop in NSOutlineView

Das ist mein d & d Code von meinem 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 
} 

Und ich habe für Drag-Typen in ViewDidLoad registriert():

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

Irgendwelche Gedanken dankbar, danke.

Antwort

0

Beantworten meiner eigenen Frage; Falsche Eingabe in register(). Dies funktioniert:

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