Ottenere i dati da un NSTableView ad un NSViewController
-
20-09-2019 - |
Domanda
Mi piacerebbe avere una 'visione dettagliata' per quando i utente fa doppio clic su una riga, solo che non sono sicuro di come ottenere i dati al NSViewController, in modo da poter visualizzare il contenuto. Sto usando CoreData e non riesco a pensare a un modo per fare questo.
Soluzione
Ci sono un paio di passi che devi fare qui:
-
Assicurarsi che la visualizzazione della tabella è guidato da un
NSArrayController
e che il controller per la vista tabella (un controller finestra o un controller della vista, o qualsiasi altra cosa) ha quelNSArrayController
legato ad un Ivar in modo che vi si accede. -
Nel vostro controller tavolo impostare la doppia azione click a un metodo nel vostro controller e fissato l'obiettivo per il controller.
-
Nel metodo click doppio è possibile accedere alla riga richiedendo l'
-selectedObjects
dalNSArrayController
e cheNSArray
risultante dovrebbe avere un solo elemento in esso.
Da lì si può quindi creare la vostra vista di dettaglio o qualsiasi altra cosa si vuole fare con esso. È possibile creare un foglio e visualizzarla, aprire una finestra modale, ecc.
Altri suggerimenti
attacchi cacao.
Apple ha un grande href="http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CocoaBindings/Tasks/masterdetail.html" di creare master-detail interfacciare s on-line.
Le schermate sono un po 'obsolete, se si sta utilizzando Xcode 3.2, ma non è poi così diverso.
NSViewController ha una representedObject proprietà, che permette di associare l'oggetto modello che si sta visualizzando.
Modifica
OK. La mia risposta non è così grande, perché è solo una mezza verità.
Mentre si mostra come associare i controlli all'interno della vista di dettaglio, non fornisce una soluzione su come legare la scelta del controller di array per representedObject
del controller della vista.
Sarei interessato a un binding-unica soluzione a questo problema.