6

在其中一个视图中,有一个 UITableView 会经常更新。使用“reloadRowsAtIndexPaths”以经典方式跟踪更改

-(void)refreshCells:(NSArray *)changedCells
{
    NSLog(@"refreshCells %i",[changedCells count]);
    [TableView beginUpdates];
    [TableView reloadRowsAtIndexPaths:changedCells withRowAnimation:UITableViewRowAnimationBottom];
    [TableView endUpdates];
}

问题:如何保留用户最后选择的单元格。每次更新refreshCells后单元格位置可能会改变?

4

1 回答 1

10

您可以使用保存当前选择

NSIndexPath *selectedRow = [self.tableView indexPathForSelectedRow];

在重新加载之前并再次选择它

if (selectedRow) {
    [self.tableView selectRowAtIndexPath:selectedRow animated:NO scrollPosition:UITableViewScrollPositionNone];
}

重新加载后。insertRowsAtIndexPaths:除非您调用或,否则单元格位置不会改变deleteRowsAtIndexPaths:

于 2012-10-24T09:04:51.530 回答