6

ビューの 1 つに、かなり頻繁に更新される UITableView があります。変更の追跡は、「reloadRowsAtIndexPaths」を使用して従来の方法で行われます

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

質問: ユーザーが最後に選択したセルを保持するにはどうすればよいですか。更新のたびにセルの位置が変わる可能性があります。

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 に答える