NSscollectionView, come inviare RappresentatoObject al codice sul doppio clic?
-
21-12-2019 - |
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.
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.