2013-10-21 32 views
10

我有一個帶有可選行的表格視圖。 當我重新加載表視圖時,可能會添加(或刪除)一些新行,並且表視圖的單元格中的某些標籤可能會更改。這就是我想通過調用[tableView reloadData]來實現的。在不清除選擇狀態的情況下重新加載表格視圖的數據

不幸的是,該方法也清除了表視圖的整個狀態 - 包括選擇。但我需要保持選擇。

那麼如何重新加載表格視圖中的所有數據,同時仍然保持選定的行選擇?

回答

16

您可以存儲所選行的索引路徑有:

rowToSelect = [yourTableView indexPathForSelectedRow]; 

之前重新加載數據。並且在重新使用之後:

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

非常簡單。謝謝! – Mischa

9

JeroVallis解決方案適用於單選表視圖。 基於他的想法,這是我如何使它與多個選項一起工作:

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

完美的作品!謝謝! :) –

+0

但這將再次爲每個先前選定的單元格調用DidselectRowAtIndexPath。並且會在用戶選擇一個單元格時觸發我編碼的操作。 – omarojo

相關問題