保持选定的单元大量reloadRowsAtIndexPaths UITableView
在其中的一个意见是有一个UITableView更新相当频繁。 跟踪更改是使用“reloadRowsAtIndexPaths”
-(void)refreshCells:(NSArray *)changedCells { NSLog(@"refreshCells %i",[changedCells count]); [TableView beginUpdates]; [TableView reloadRowsAtIndexPaths:changedCells withRowAnimation:UITableViewRowAnimationBottom]; [TableView endUpdates]; }
问题:如何保留用户上次select的单元格。 每次更新refreshCells后,单元格的位置可能会改变?
您可以保存当前的select
NSIndexPath *selectedRow = [self.tableView indexPathForSelectedRow];
重新加载之前,再次select它
if (selectedRow) { [self.tableView selectRowAtIndexPath:selectedRow animated:NO scrollPosition:UITableViewScrollPositionNone]; }
之后重新加载。 除非调用insertRowsAtIndexPaths:
或deleteRowsAtIndexPaths:
否则单元格的位置不会改变。