Domanda

Ho un problema con l'ordinamento dei contenuti di NstableColumn. Nel mio nstableview ci sono tre colonne: file, dimensioni, percorso. I contenuti sono archiviati in NSMutableArray. Ogni oggetto in questo array è un NSDictionary contenente tre chiavi: file, dimensioni e percorso - valore per ciascuno è un NSString.

In Interface Builder, negli attributi di ogni tabella posso scegliere le opzioni di smistamento: selettore: IB immesso "Confronta:" che penso sia OK, perché confronto NSStrings. Ordina la chiave - e questo è il problema che penso - non so cosa entrare qui.

Qualche indizio? Se hai domande sul mio codice, chiedi.

È stato utile?

Soluzione

Quindi ho trovato la soluzione completa.

Innanzitutto, vai a Interface Builder. Seleziona la colonna che vuoi ordinare. Vai all'ispettore della colonna e scegli il primo pulsante per visualizzare gli "attributi della colonna della tabella". Imposta valori appropriati (letteralmente, no "o 'o @ sono necessari):

Sort key: file

dove "file" è la chiave del dizionario che il contenuto è mostrato nella colonna.

Selector: compare:

funzione di ordinamento standard.

Ora, salva tutte le modifiche qui e salta su Xcode, nella classe in cui è il modello, la fonte dei dati mostrati in NSTABLEVIEW. Dovresti già sapere che hai bisogno di due metodi lì:

-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn
 *)tableColumn row:(NSInteger)row

Questi due sono necessari per conformarsi al protocollo informale NSTOBableAtaSource. Puoi leggerlo al MacDev Center.

Ora tutto ciò che devi fare è aggiungere un nuovo metodo:

-(void)tableView:(NSTableView *)tableView sortDescriptorsDidChange: (NSArray *)oldDescriptors

Può contenere un codice molto semplice che farà la cosa:

-(void)tableView:(NSTableView *)tableView sortDescriptorsDidChange: (NSArray *)oldDescriptors 
{       
    NSArray *newDescriptors = [tableView sortDescriptors];
    [results sortUsingDescriptors:newDescriptors]; 
    //"results" is my NSMutableArray which is set to be the data source for the NSTableView object.
    [tableView reloadData]; 
}

E questo è tutto. Funziona nella mia app, spero che funzioni nel tuo caso: D tutto dovrebbe funzionare automaticamente. Ho appena salvato tutti i file e ho creato l'app. E ha funzionato. :)

Sito che mi ha aiutato:COCOADEV: SortingNstableView

Altri suggerimenti

La chiave è la key che usi nel dizionario per recuperare il valore.

Nel tuo caso hai tre chiavi: file, dimensioni e percorso. Seleziona quello su cui vuoi ordinare. La chiave viene utilizzata per recuperare il valore da ciascun record da utilizzare per l'ordinamento.

Se le tue chiavi sono @"file", @"dimensione", @"percorso" e vuoi sistemare file Quindi prova a mettere value.file dentro Sort Key campo in ib.

Usa i tasti che usi quando si inserisce values nel tuo NSDictionary.

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