特定のセルのみの表示更新を行いたい場合の方法。
以下のようなパターンで必要になった。
- セルをスワイプして削除ボタンを表示し、削除ボタンをタップ
- セル内のデータに基づく内部データを処理(セル自体は削除したくない)
- 削除ボタンが消せない(reloadData)
- セルのみ更新をしたい
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