Trong MacOS 10.7 một số giao thức mới được thêm vào để thực hiện việc này.
Có một lack of documentation for tables vào lúc này nhưng bạn có thể tìm thấy một số ví dụ tốt đẹp:
Đối NSTableViwew Nghị định thư NSTableViewDataSource xác định các phương pháp sau:
(BOOL)tableView:writeRowsWithIndexes:toPasteboard:
tableView:validateDrop:proposedRow:proposedDropOperation:
tableView:acceptDrop:row:dropOperation:
Đối NSOutlineView Nghị định thư NSOutlineViewDataSource xác định các phương pháp sau:
(BOOL)outlineView:writeItems:toPasteboard:
(NSDragOperation)outlineView:validateDrop:proposedItem:proposedChildIndex:
(BOOL)outlineView:acceptDrop:item:childIndex:
Đây là những yêu cầu tối thiểu để triển khai cho từng loại chế độ xem. Các trường hợp sử dụng khá giống nhau.
- Nếu phương thức toPasteboard: trả về CÓ, kéo được bắt đầu.
- Các validateDrop: Phương pháp điều khiển mà nút nhắm mục tiêu được phép bằng cách cập nhật điểm đánh dấu trong giao diện
- Return YES cho acceptDrop: Phương pháp nếu thả đã thành công
Điều này dẫn đến hai tiểu usecases bạn có để quản lý. Điều đầu tiên là kéo & thả trong cùng một chế độ xem hoặc hoạt động tương tự giữa hai chế độ xem. Ngoài ra, bạn có thể phân biệt giữa các thao tác di chuyển, sao chép hoặc xóa. Một ví dụ điển hình là cách các điểm ngắt hoạt động với việc kéo thả & vào Xcode.
BảngView có một số phương pháp bổ sung để tùy chỉnh kéo thả &, nhưng những cái tôi đã đề cập là các phương pháp chính để làm cho nó hoạt động.
Liên kết kết thúc bằng 404 và tôi không thể tìm thấy mã gốc ở bất kỳ đâu. –
@ François Beausoleil: Cảm ơn; Tôi đã cập nhật liên kết. –
Như một cách hoàn toàn hợp lý và sạch sẽ để làm điều này. Cảm ơn bạn đã phản hồi. –