読者です 読者をやめる 読者になる 読者になる

UITableViewでアニメーション付きで行を削除しつつ表示を更新するやり方

1行ごとに色を変えてたり、セルに行番号とか表示してるとdeleteRowsAtIndexPaths:だけでは、表示が更新されないことに気づきreloadData呼んだ。

でも、reloadData呼ぶと削除アニメーションが消えちゃうのであれーどうやるのかなーと思って調べたけど、意外と日本語出てこなかったのでメモ。

答えは、StackOverflowにあった。

How to delete row in UITableView and update indexPaths without calling reloadData?

アニメーション付きのreloadDataみたいなメソッドがUITableViewにあったのでそれでリロードしてねってことでした。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle != UITableViewCellEditingStyleDelete) {
        return;
    }
    /*
      dataSourceを削除する処理
      */
    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    [tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationAutomatic];
}