In MacOS 10.7 sono stati aggiunti alcuni nuovi protocolli per implementare questo.
C'è un lack of documentation for tables al momento, ma si possono trovare alcuni esempi curato:
Per NSTableViwew del protocollo NSTableViewDataSource definisce i seguenti metodi:
(BOOL)tableView:writeRowsWithIndexes:toPasteboard:
tableView:validateDrop:proposedRow:proposedDropOperation:
tableView:acceptDrop:row:dropOperation:
Per NSOutlineView protocollo NSOutlineViewDataSource definisce i seguenti metodi:
(BOOL)outlineView:writeItems:toPasteboard:
(NSDragOperation)outlineView:validateDrop:proposedItem:proposedChildIndex:
Questi sono i requisiti minimi da implementare per ciascun tipo di vista. I casi d'uso sono abbastanza simili.
- Se il toPasteboard: metodo restituisce SÌ, viene avviato il trascinamento.
- Il validateDrop: controlli metodo che prendono di mira il nodo è consentito aggiornando il marcatore nella vista
- ritorno SI per l'acceptDrop: metodo se il calo è stato di successo
Questo ha portato a due sotto-casi d'uso che hai gestire. Il primo è un trascinamento & rilasciato all'interno della stessa vista o la stessa operazione tra due viste. Inoltre è possibile distinguere tra operazioni di spostamento, copia o cancellazione. Un bell'esempio è come funzionano i punti di interruzione con il trascinamento della caduta di Xin Xcode.
Il TableView ha alcuni metodi aggiuntivi per personalizzare il trascinamento dello spostamento &, ma quelli che ho citato sono i metodi chiave per farlo funzionare.
Il collegamento termina come 404 e non riesco a trovare il codice originale da nessuna parte. –
@ François Beausoleil: Grazie; Ho aggiornato il collegamento. –
Un modo perfettamente logico e pulito per farlo. Grazie per ricollegare. –