vista tabella che non aggiorna in base alle legature - parte seconda
-
20-09-2019 - |
Domanda
Titolo preso in prestito da questa domanda , di cui questo è non un duplicato. Vedere la mia risposta non per quello che era sbagliato per quel interrogante; Sono l'autore di tale risposta, e il mio problema non è che uno.
Ho una vista tabella con tre colonne, i cui attacchi valore sono vincolati a tre proprietà del arrangedObjects
di un controller di array. contentArray
del controller di array è legato al visitationResults
del mio oggetto di documento; gli elementi di tale array sono istanze di una classe del modello (VisitationResult). Ho anche legato selectionIndexes
e sortDescriptors
del controller di array di proprietà del mio documento.
sto mutando la mia proprietà attraverso un paio di funzioni di accesso:
- (void) addVisitationResult:(VisitationResult *)newVisitationResult {
[self insertObject:newVisitationResult inVisitationResultsAtIndex:[self countOfVisitationResults]];
NSLog(@"arrayController arrangedObjects: %@", [arrayController arrangedObjects]);
}
Questa affermazione NSLog
corre, e conferma che il controller di array sta raccogliendo e organizzando i miei oggetti del modello. Questo vuol dire che sto attraversando la mia proprietà e ottenere le notifiche KVO per il mio documento (il che dimostra che il problema del interlocutore in precedenza, che di bypassare la proprietà, non è il problema che sto avendo).
Ho aggiunto dichiarazioni NSLog
a metodi di accesso mio modello di classe di oggetti. Uno di essi viene chiamato-dal controller di array, per ordinare gli oggetti (che proprietà è la chiave di ordinamento). Gli altri due, che il controller di array non conosce, non vengono mai chiamati.
Quindi, la mia vista tabella rimane vuota.
Soluzione
Ho trovato il problema: È perché avevo legato in modo esplicito i selectionIndexes
e sortDescriptors
attacchi della visualizzazione della tabella
Questo non è stato necessario, in ogni caso: ho appena controllato, e la documentazione dice:
selectionIndexes
In genere, selectionIndexes viene automaticamente associato alla NSArrayController che il primo è destinato a NSTableColumn.
sortDescriptors
In genere questo legame viene creato automaticamente, il legame con i descrittori di ordinamento della NSArrayController del NSTableColumn inizialmente legato.
Sembra che non solo non è necessario, ma vincolante uno o entrambi questi due romperà vista tabella.