保持选定的单元大量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:否则单元格的位置不会改变。