Mi chiedo come si potrebbe implementare una vista struttura come quella Xcode 3 sta usando per la configurazione di generazione:Implementazione NSOutlineView/NSTableView con diverse cellule (e tipi di dati) per fila
alt text http://img812.imageshack.us/img812/9467/xcodeoutlineview.png
Quando utilizzando un NSOutlineView/NSTableView con binding e un NSTreeController/NSArrayController, le colonne della vista ottengono i binding assegnati a, non le singole celle, per ovvi motivi. Se ogni riga di una colonna utilizza la stessa cella, è un gioco da ragazzi. Tuttavia se ogni riga (potenzialmente) utilizza il proprio tipo di cella (e con quello potenzialmente la propria raccolta di binding), le cose diventano funky.
Guardando lo screenshot si può vedere chiaramente che la cella del campo di testo ha bisogno di una sola associazione per "valore". Mentre la pila a bottone popup ha bisogno di almeno uno per "contenuti", uno per "contentValues " e, ultimo ma non meno importante un vincolanti per "selectedIndex/selectedObject/SelectedValue". E la casella di controllo ha bisogno di un binding per "valore" e (probabilmente) uno per "titolo".
Come si può ottenere ciò con un codice pulito (e poco) il più possibile?
(O come ci si potrebbe chiedere:Come sarebbe Apple hanno fatto?)
...
Ecco quello che io stesso ho provato finora:
fornisco celle appropriate (copiate) via [outlineView: dataCellForTableColumn: item:] e collegarli ai singoli modelli di dati (da [item representationObject]). Conosco la quantità esatta di dati (< 500 righe) visualizzata nella vista struttura, quindi avere una cella per riga non dovrebbe essere un problema di memoria, no? Ho ottenuto i dati per essere visualizzati correttamente tramite binding (yay!) Tuttavia non sono in grado di modificare nessuno dei loro valori. O_o Apparentemente la modifica del valore non passa mai direttamente al modello dati. C'è altro oltre a un semplice [checkboxCell bind: @ "valore" toObject: rowModel withKeyPath: @ "valore" opzioni: nil]? (Come questo sembra sufficiente per ottenere valori, ma non per l'impostazione di conseguenza.)
non ho trovato alcuna informazione su questo argomento. Un sacco di informazioni e suggerimenti per l'utilizzo di celle personalizzate per colonna, ma nessuno per il loro utilizzo su una base "per riga". :(
Ciò renderebbe alcune grandi cose per un tutorial di Cocoa, non è vero?;)
C'è anche NSDictionaryController. Non so fino a dove ti porterà, ma dai un'occhiata. –
@Mike Non è tanto un problema del controller, ma uno della vista tabella che gestisce le sue celle. Ma grazie comunque :) – Regexident
quasi 5 anni più tardi e questa era l'unica informazione che potevo trovare sul mixare i binding con la sorgente dati su un tavolo con celle diverse, "Questo renderebbe alcune cose grandiose per un tutorial di Cocoa, no?" , diamine si! – rraallvv