5

Ho una NSCollectionView per il quale ho un dataArray e un selectedIndexesNSIndexSet definito nella sua File's Owner. (Dato che sto lavorando con MonoMac su quel progetto ho avuto qualche problema con un semplice NSArrayController e così ho deciso di implementare la sorgente da solo.) Quando inizializzo il mio controller aggiungo alcuni dati (NSMutableDictionary s) al numero dataArray . Quando l'applicazione mostra la sua finestra tutti i dati che ho appena aggiunto vengono visualizzati bene.associazione dati in un NSCollectionView

Il problema è che le modifiche all'origine dati non influiscono in alcun modo sull'interfaccia. L'interfaccia non dovrebbe aggiornarsi automaticamente quando aggiungo, cambio o rimuovo un elemento dall'origine dati poiché ho associato i valori usando le chiavi corrispondenti?

mi sto perdendo qualcosa? Qualche idea su questo?

Grazie mille
-f

+0

Hai mai funzionato completamente? Sono nuovo di monomac e sto cercando di fare la stessa cosa che tu sei. – tempy

+0

anche io, c'è un esempio di come farlo? – tofutim

risposta

2

l'associazione ad un rapporto a-molti di voi fonte di dati che si devono fare in modo che l'origine dati è valore-chiave Osservando compatibile per questa proprietà. Non è sufficiente avere una proprietà pubblica per una collezione mutabile, come lo NSMutableArray.

Nell'implementazione dell'origine dati, è necessario utilizzare i metodi dal protocollo NSKeyValueObserving per annunciare le modifiche apportate (utilizzando willChange:valuesAtIndexes:forKey: per le relazioni to-many).

Se le prestazioni sono meno importanti di un'implementazione semplice, è possibile utilizzare anche un valore (immutabile) NSArray per la proprietà e assegnare sempre un nuovo array quando i dati cambiano. In questo modo non otterrai le belle animazioni per oggetti aggiunti o rimossi.

+1

Grazie, Nikolai. Questo mi ha indirizzato nella giusta direzione per il problema relativo ai Mono. L'attributo [Esporta] sembra fare il trucco. – flohei