Domanda

Nel mio setup ho un NSCollectionView dei volumi collegati al Mac. Per View del NSCollectionViewItem ho un NSBox con una NSTableView all'interno che elenca i contenuti di quel volume.

Il mio problema arriva quando si cerca di aggiungere / rimuovere elementi al NSTableView. Il NSBox sembra essere inizializzato una volta, per cui v'è un solo NSTableView. Ciò significa che quando voglio aggiornare i dati all'interno del NSTableView non posso chiamare reloadData su un IBOutlet e farlo aggiornare tutte le tabelle.

Se creo un IBOutlet in una sottoclasse della NSBox, è pari a zero per l'istanza, quindi non posso chiamarlo attraverso tale.

Il più vicino sono giunto è allegando @catch @try intorno al codice che restituisce l'oggetto in una riga in una colonna, un'eccezione si verifica poiché tale elemento non esiste più, così posso afferrare il tableView e chiamare reloadData, che sembra aggiornare tale NSTableView specifica.

Il problema è che se l'elemento rimosso è alla fine della tabella, o se si aggiunge un elemento, l'eccezione verrà si verifica in quanto può vedere tutti gli elementi esistenti.

Qualcuno ha avuto esperienza con un NSTableView in vista di un NSCollectionViewItem? Come hai fatto a aggiornare le tabelle?

È stato utile?

Soluzione

Mettere il NSBox (con il suo NSTableView) nella propria pennino. Ogni volta che si crea un nuovo elemento vista collezione, caricare il pennino, set che NSBox come visualizzare la vista della voce della raccolta, e rilasciare il NSBox.

Per quanto riguarda l'alimentazione il punto di vista della tabella, il modo più semplice è probabilmente Associazioni. Associare ogni colonna della vista tabella per una diversa proprietà dell'oggetto modello che l'elemento vista collezione rappresenta. Probabilmente si vorrà passare attraverso un controller di array, naturalmente, che significa avere uno di quelli per la raccolta oggetto vista, e aggiungendoli a un array, che si rilascia in dealloc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top