2013-10-21 16 views
10

Ho una vista tabella con righe selezionabili. Quando ricarico la vista tabella alcune nuove righe potrebbero essere aggiunte (o rimosse) e alcune etichette nelle celle della vista tabella potrebbero cambiare. Questo è ciò che voglio ottenere chiamando lo [tableView reloadData].Ricarica i dati di una vista tabella senza cancellare il suo stato di selezione

Sfortunatamente, questo metodo cancella anche l'intero stato della vista tabella, inclusa la selezione. Ma ho bisogno di mantenere la selezione.

Quindi, come posso ricaricare tutti i dati in una vista tabella mantenendo le righe selezionate selezionate?

risposta

16

È possibile memorizzare il percorso indice della riga selezionata con:

rowToSelect = [yourTableView indexPathForSelectedRow]; 

Prima di ricaricare i dati. E dopo l'uso di ricarica:

soluzione
[yourTableView selectRowAtIndexPath:rowToSelect animated:YES scrollPosition:UITableViewScrollPositionNone]; 
+1

piuttosto semplice. Grazie! – Mischa

9

JeroVallis lavora per singole viste Tabella di selezione. Sulla base della sua idea di questo è come ho fatto il lavoro con selezione multipla:

NSArray *selectedIndexPaths = [self.tableView indexPathsForSelectedRows]; 
[tableView reloadData]; 
for (int i = 0; i < [selectedIndexPaths count]; i++) { 
    [tableView selectRowAtIndexPath:selectedIndexPaths[i] animated:NO scrollPosition:UITableViewScrollPositionNone]; 
} 
+0

Funziona perfettamente! Grazie! :) –

+0

ma questo chiamerà nuovamente DidselectRowAtIndexPath per ciascuna cella selezionata in precedenza. E attiverà le azioni che ho codificato quando l'utente seleziona una cella. – omarojo

Problemi correlati