Ho un'applicazione Core Data non basata su documenti. C'è un NSTreeController
che gestisce una raccolta di oggetti visualizzati in un singolo NSOutlineView
come un elenco di fonti. Sono i soliti tipi di cose: intestazioni, cartelle, cartelle intelligenti, ecc.NS (Array | Tree) Controller Architecture per più NSViewControllers
Ciascuno di questi oggetti contenitore contiene una raccolta di oggetti contents
. Ho tre distinti controller di visualizzazione che visualizzano questi oggetti in vari modi (uno NSTableView
e due viste grafiche personalizzate, se proprio lo vuoi sapere) Ma queste sono solo tre diverse presentazioni degli stessi dati. Dovrebbero sempre mostrare gli stessi oggetti, condividere la stessa selezione, ecc.
Sto anche utilizzando una gerarchia di NSViewController
s per gestire le mie visualizzazioni. (Se avessi saputo dell'eccellente KTUIKit
di Cathy Shive in quel momento, l'avrei usato, ma i miei controller di visualizzazione sono molto simili - e molto ispirati a - suoi)
Così com'è ora, io avere un NSTreeController
che vive nel controller di visualizzazione per la vista elenco di origine. Ho anche un NSArrayController
in ciascuno dei controller della vista secondaria che è associato allo NSTreeController
tramite alcuni keypath troppo complicati.
Allora, che cosa ha bisogno di cambiare, a mio parere, è la seguente:
- Le
NSTreeController
ha bisogno di muoversi fuori del controllore della vista struttura. - Ci dovrebbe essere un singolo
NSArrayController
a cui ciascuna delle viste dei contenuti può essere associata anziché tre separate. Anche se sono meno sicuro di questo punto.
Quello che sto avendo difficoltà è capire dove queste cose dovrebbero vivere. Sto attraversando un periodo difficile nel decidere quali oggetti, se ve ne sono, "possedere" veramente i vari controller. Lo possiedono i controller della vista genitore? Il controller della finestra? Dato che si tratta di dati a livello di applicazione, posso arrivare al punto di farli appartenere al Delegato app? (Potrei immaginare una circostanza in cui un utilizzo potrebbe voler aprire più finestre, anche se non è attualmente supportato) Che cosa pensa la mente dell'hive di StackOverflow?
Grazie per la vostra risposta riflessiva! Ho sempre considerato i controller degli oggetti più orientati alla vista. Questo è parte del motivo della mia indecisione qui :-) Non avevo pensato di usare representObject per i controller; Mi ero quasi rassegnato a fare i collegamenti a livello di programmazione. La motivazione per questa domanda è che ho raggiunto un punto in cui devo refactoring. Sta diventando troppo doloroso per gestire tutta la complessità di avere controller in posti strani. Ho anche escluso il delegato dell'app come il luogo appropriato. La finestra sembra il posto più logico per questo. – Alex