jubilee

Programing, Books and more...

指定したセルの表示更新を行う

特定のセルのみの表示更新を行いたい場合の方法。
以下のようなパターンで必要になった。

  1. セルをスワイプして削除ボタンを表示し、削除ボタンをタップ
  2. セル内のデータに基づく内部データを処理(セル自体は削除したくない)
  3. 削除ボタンが消せない(reloadData)
  4. セルのみ更新をしたい
1
2
3
4
5
6
7
8
9
10
11
12
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // セルの削除ボタンでしたい処理
        ...
        // 処理したセルの更新↓↓↓
        NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
        [self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];
        // ↑↑↑
    } else if (editingStyle == UITableViewCellEditingStyleInsert) {
    }
}

更新時のアニメーション

  • UITableViewRowAnimationFade
  • UITableViewRowAnimationRight
  • UITableViewRowAnimationLeft
  • UITableViewRowAnimationTop
  • UITableViewRowAnimationBottom
  • UITableViewRowAnimationNone
  • UITableViewRowAnimationMiddle