2010-08-27 22 views
6

Tengo un NSCollectionView que está configurado correctamente para mostrar las entidades de datos principales en función de lo que se encuentra en un NSArrayController. Estas entidades de Datos centrales, denominadas MyManagedType, se definen para incluir un número de indexación int32 "indexNumber" para mantenerlas ordenadas, y NSData * myData binario. También puedo seleccionar los elementos haciendo clic en ellos, pero no puedo "hacer clic y arrastrarlos". Solo necesito poder seleccionar 1 artículo a la vez (preferible en realidad).Arrastrar y colocar dentro de NSCollectionView

I llene NSArrayController arrastrando y soltando archivos del buscador en NSCollectionView. Acepta archivos caídos al obtener sus ARCHIVOS. A continuación, abro el archivo, hago mi procesamiento, rellena myData, obtengo un nuevo indexNumber (indexNumber = # de entidades MyManagedType en la tienda persistente) e inserto este NSManagedObject * en mi tienda persistente. Eso funciona genial

Las 2 cosas que quiero agregar, estoy perdido.

1) Quiero poder hacer clic y agarrar un elemento en el NSCollectionView, arrastrarlo fuera de la vista (o ventana), y soltarlo para "poof" y hacer que lo elimine de mi tienda persistente.

2) Quiero poder hacer clic y agarrar un elemento en NSCollectionView, arrastrarlo a OTRO PUNTO en mi NSCollectionView, y soltarlo para reordenar mis indexNumbers.

El principal punto de tropiezo aquí es que no entiendo qué arrastrar & tipos de caída para configurar para manejar - con mi código actual son los nombres de archivo, pero ¿qué es ahora? He leído la referencia de la clase varias veces y entiendo lo que hacen muchos de los métodos, pero no puedo entender cómo logré los números 1 y 2.

Respuesta

1

Quería arrastrar y soltar trabajando en un NSOutlineView, y encontré Jonathan Dann's source code increíblemente útil.

Es posible que desee comprobarlo e intentar modificarlo para utilizarlo con NSCollectionView.

+0

Cambió la dirección de su blog. El nuevo enlace se encuentra aquí: http://jonathandann.wordpress.com/2008/05/13/nstreecontroller-and-core-data-sorted/ – Dov

+0

Gracias Dov. Enlace actualizado –

0

con una vista de tabla, el tipo de arrastre para los datos desde el punto de vista sí es, extrañamente, una cadena arbitraria que se establece, como esto:

#define arbitraryDataTypeForInterRowDragging @"arbitraryDataTypeForInterRowDragging". 

Luego se utiliza en el método delegado acceptDrop como esto :

NSData *rowData = [pboard dataForType:arbitraryDataTypeForInterRowDragging]; 

NSCollectionView los métodos de delegado parecen seguir el mismo patrón.

Cuestiones relacionadas