Перетащите из приложения Какао в Finder - PullRequest
3 голосов
/ 19 марта 2012

У меня есть NSCollectionView , который отображает некоторые файлы: enter image description here

Что я хочу ...

  1. , возможность выбрать один файл.
  2. возможность перетаскивать этот файл на рабочий стол или в другое окно Finder.

Значки файлов отображаются в NSImageView.

Что быбыть хорошим подходом для обеспечения такой функциональности?

Большое спасибо!

1 Ответ

2 голосов
/ 19 марта 2012

Вам нужно вызвать declareTypes:owner: в представлении коллекции и передать типы монтажных панелей, которые вы хотите перетащить. В вашем случае вы хотите NSURLPboardType.

Все, что вам нужно сделать, это реализовать три метода делегата, связанных с перетаскиванием, в вашем NSCollectionView делегате .

Вы должны вернуть YES из этого метода:

collectionView:canDragItemsAtIndexes:withEvent:

Вы можете вернуть пользовательское изображение перетаскивания для каждого элемента, используя этот метод:

collectionView:draggingImageForItemsAtIndexes:withEvent:offset:

И вы записываете элементы в монтажный картон, используя этот метод:

collectionView:writeItemsAtIndexes:toPasteboard:

В вашем случае вы бы записали URL-адрес перетаскиваемого элемента в монтажную панель при реализации этого метода.

Если вы не понимаете, как работать с картоном, вам следует прочитать руководство Перетаскивание тем программирования .

...