Pregunta

Estoy usando enlaces por primera vez en un almacén de datos principales con una relación de una a muchas personas en mis entidades, muestro los subitems usando un NSCOLLECTVIEWVIEW que muestra una imagen y un título.

Los objetos son:

Subitems Array Controller (NSArrayController)
Collection View Item (NSCollectionViewItem)

los controles son:

NSCollectionView
NSView (for the item)
   NSImageView
   NSTextField

He encado el elemento NSImageView para recoger la visión con la ruta de la clave del modelo como RepresentEdObject.ImagePath y un transformador de valor.Todo esto funciona bien.

Lo que quiero hacer es detectar un doble clic en el elemento en el código y obtener acceso a la RepresentedObject del elemento con doble clic.

Intenté subclase NSImageView y anulará el evento del mouse para un evento de clic que funcionó, pero luego no pude acceder desde aquí al contexto de administración y el objeto seleccionado.No estoy seguro de cómo hacer esto de la manera correcta.

Gracias por cualquier ayuda, entiendo que esto son cosas básicas y debo estar haciendo algo incorrecto con la implementación de los enlaces.

¿Fue útil?

Solución

Implementar subclase para su elemento Vista de colección, digamos CustomSCollectViewItem y cambie la clase del elemento Vista de colección en el IB.

Subclase You nsimageView también, en esta clase maneja el doble clic.Cree un objeto de delegado de referencia débil y vincule a este delegado a su CustomScollectViewItem en IB.

Ahora, cuando hace clic en Pedirle a la delegada que llame a cualquier método de su CustomSCollectViewItem y en CustomSCollectViewIdem, tiene acceso al RepresentEdObject.

Ahora, el problema es cómo pasar aún más a la clase real del controlador.Debe nuevamente crear un delegado de referencia débil en CustomSCollectViewItem y vincule a este delegado a la clase principal del controlador en IB.

Entonces, cuando CustomCollectViewIdem recibe una invocación de la subclase de NSImageView, llame al método de la clase del controlador principal y pase el REPRESENTEBJECT.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top