Ho un controller di visualizzazione che è il delegato per 2 tabelle, una tabella basata sulla vista e una tabella basata su celle. La tabella basata su celle chiama quando dovrebbe chiamare objectValueForTableColumn
. Mi sono detto doppiamente che si trattava di una tabella basata su celle nel generatore di interfacce.Perché il mio cellulare NSTableView chiama viewForTableColumn?
risposta
Se il delegato di NSTableView
implementa il metodo tableView:viewForTableColumn:row:
, lo NSTableView
passa automaticamente alla visualizzazione in base. È necessario creare delegati diversi per le 2 viste tabella
Le viste tabella basate sulla vista e le viste tabella basate su celle non si combinano, è possibile avere due delegati diversi oppure è possibile trasformare la tabella delle celle in un vedere tabella in base e quindi utilizzare il seguente codice nel tableView:viewForTableColumn:row:
per farlo sembrare come un tavolo a base di cellule:
NSTableCellView *cell = [tableView makeViewWithIdentifier:@"textFieldCell" owner:self];
dove textFieldCell
è l'identificativo della cella. Quindi si imposta la stringa che si desidera visualizzare nella cella utilizzando questo codice:
[[cell textField] setStringValue:desiredString];
alla fine del metodo restituisce la cella variabile
Ho lo stesso problema. Mi piacerebbe che l'istanza di NSViewController fosse delegata sia per le tabelle basate su viste che per quelle basate su celle. Sfortunatamente, mentre tableView: viewForTableColumn: row: il metodo viene chiamato per cell based, il suo contenuto non viene visualizzato affatto. – dzolanta