No, non esiste un metodo selectItem:
, ma esiste un metodo rowForItem:
. Se lo combini con il consiglio di Peter sull'uso di selectRowIndexes:byExtendingSelection:
sopra, dovresti avere tutte le informazioni di cui hai bisogno.
se si voleva davvero avere un metodo per selezionare una voce, che mi sento di raccomandare chiamando setSelectedItem:
per amor di coerenza, si potrebbe scrivere qualcosa di simile in una categoria a NSOutlineView
- (void)setSelectedItem:(id)item {
NSInteger itemIndex = [self rowForItem:item];
if (itemIndex < 0) {
// You need to decide what happens if the item doesn't exist
return;
}
[self selectRowIndexes:[NSIndexSet indexSetWithIndex:itemIndex] byExtendingSelection:NO];
}
Non ho idea se questo codice funziona davvero; L'ho appena buttato fuori per illustrare il concetto.
Ciao Peter, grazie per la risposta. Conosco già il metodo selectRowIndexes: byExtendingSelection :. Il problema è che NSOutlineView sta funzionando con NSIndexPath e non con NSIndexSet. – cocoafan
Non vedo una singola istanza di NSIndexPath nella documentazione di NSOutlineView. Forse stai pensando a NSTreeController, che non stai utilizzando. Inoltre, una vista schema * è * una vista tabella, il che significa che tutte le funzionalità di visualizzazione tabella dovrebbero funzionare correttamente nella vista struttura. –
Sì, vedo. A male che non esiste una soluzione integrata che non dipende dalla mia origine dati. Devo scrivere codice extra nella mia origine dati, giusto? – cocoafan