重新加载表视图的数据而不清除其选择状态

Mis*_*cha 17 clear uitableview reloaddata ios

我有一个带可选行的表视图.当我重新加载表视图时,可能会添加(或删除)一些新行,并且表视图的单元格中的某些标签可能会更改.这就是我想通过调用实现的目标[tableView reloadData].

不幸的是,该方法还清除了表视图的整个状态 - 包括选择.但我需要保持选择.

那么如何在保持所选行选定的同时重新加载表视图中的所有数据呢?

小智 22

您可以使用以下方法存储所选行的索引路径:

rowToSelect = [yourTableView indexPathForSelectedRow];
Run Code Online (Sandbox Code Playgroud)

在重新加载数据之前.重装后使用:

[yourTableView selectRowAtIndexPath:rowToSelect animated:YES scrollPosition:UITableViewScrollPositionNone];
Run Code Online (Sandbox Code Playgroud)


Mis*_*cha 11

JeroVallis解决方案适用于单选表视图.基于他的想法,这就是我如何使用多种选择:

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