2013-10-21 18 views
10

Mam widok tabeli z wybieralnymi wierszami. Po ponownym załadowaniu widoku tabeli niektóre nowe wiersze mogą zostać dodane (lub usunięte), a niektóre etykiety w komórkach widoku tabeli mogą ulec zmianie. Właśnie to chcę osiągnąć, dzwoniąc pod numer [tableView reloadData].Ponownie załaduj dane widoku tabeli bez usuwania jego stanu wyboru.

Niestety, ta metoda powoduje również usunięcie całego stanu widoku tabeli - włącznie z wyborem. Ale muszę zachować wybór.

Jak mogę ponownie załadować wszystkie dane w widoku tabeli, zachowując jednocześnie wybrane wybrane wiersze?

Odpowiedz

16

można przechowywać ścieżkę indeksu wybranego wiersza z:

rowToSelect = [yourTableView indexPathForSelectedRow]; 

Przed przeładować dane. A po przeładowaniu użyj:

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

Całkiem proste. Dzięki! – Mischa

9

Rozwiązanie JeroVallis działa dla pojedynczych widoków tabel wyboru. Opierając się na jego pomyśle, w ten sposób udało mi się pracować z wieloma opcjami:

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

Działa idealnie! Dzięki! :) –

+0

ale to wywoła ponownie DidselectRowAtIndexPath dla każdej poprzednio wybranej komórki. I uruchomi akcje, które zakodowałem, gdy użytkownik wybierze komórkę. – omarojo

Powiązane problemy