Domanda

Sto usando Binding per la prima volta su un archivio dati core con una relazione su molte relazioni sulle mie entità, raccolgo i subitems utilizzando un nscollectionView che mostra un'immagine e un titolo.

Gli oggetti sono:

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

I controlli sono:

NSCollectionView
NSView (for the item)
   NSImageView
   NSTextField
.

Ho legato la NSIMAGEView to Collection Guarda l'articolo con il percorso del tasto modello come rappresentatobject.imagepath e un trasformatore di valore.Tutto funziona bene.

Quello che voglio fare però è rilevare un doppio clic sull'elemento nel codice e accedere ad accedere al RappresentatoObject dell'articolo con doppio clic.

Ho provato a sottoclasse nsimageview e sovrascrivere l'evento del mouse per un evento di clic che ha funzionato, ma allora non ho potuto accedere da qui al contesto ManageDobject e l'oggetto selezionato.Non sono sicuro di come eseguirlo il modo corretto.

Grazie per qualsiasi aiuto, capisco che questa è roba di base e devo fare qualcosa di errato con l'implementazione dei binding.

È stato utile?

Soluzione

Implementare la sottoclasse per la vostra voce di visualizzazione della raccolta, dire customcollectionViewItem e modifica la classe della voce di visualizzazione della raccolta in IB.

Sottoscrizione anche tu nsimageview, in questa classe maneggia il doppio clic.Creare un oggetto delegato di riferimento debole e vincola questo delegato sul tuo customcollectionViewItem in IB.

Ora, quando fai doppio clic su chiedere il delegato di chiamare qualsiasi metodo del tuo customcollectionViewItem e in misura customCollectionViewItem hai accesso al RappresentatoObject.

Ora, il problema è come passarti ulteriormente alla classe del controller effettivo.È necessario creare nuovamente un debole delegato di riferimento nel customcollectionViewItem e associare questo delegato alla classe del controller principale in IB.

Allora, quando customcollectionViewItem riceve un'invocazione dalla sottoclasse NSIMAGEView, quindi chiamare il metodo della classe del controller principale e passano il RappresentatoObject.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top