テーブルのセクションをアニメーション付きで更新する

UITableViewのメソッド、「- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation」を使えば簡単に実現できます。

--- ソースの一部抜粋 ---
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    switch (indexPath.section) {
        case 1:
            self.updateFlag = [NSNumber numberWithBool:YES];
            NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:0];
            // アニメーションを使ってセクションを更新する。
            [self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationBottom];
            break;
        default:
            break;
    }
}
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    switch (indexPath.section) {
        case 0:
            if ([self.updateFlag boolValue]) {
                // リロード後はこちらが表示される。
                switch (indexPath.row) {
                    case 5:
                        cell.textLabel.text = @"新規行を追加";
                        break;
                    default:
                        cell.textLabel.text = [NSString stringWithFormat:@"変更後の行%d", indexPath.row];
                        break;
                }
            } else {
                // リロード前の表示内容。
                switch (indexPath.row) {
                    default:
                        cell.textLabel.text = [NSString stringWithFormat:@"変更前の行%d", indexPath.row];
                        break;
                }
            }
            break;
        case 1:
            cell.textLabel.text = @"更新ボタン";
            cell.textLabel.textAlignment = UITextAlignmentCenter;
            cell.textLabel.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]];
            break;
        default:
            break;
    }
}

なお、上記例ではアニメーションに「UITableViewRowAnimationBottom」を指定しており、下方向にスライドするような感じでアニメーションします。他にも、フェードイン・アウトや他の方向もあります。

UITableViewRowAnimation

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

この記事が役に立った場合、シェアしていただけると励みになります!!