21
[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] 
                      withRowAnimation:UITableViewRowAnimationNone];

これを行うと、挿入している行の後のすべての行が下にスライドします。すぐに新しい場所に飛び込んでほしい。reloadDataそれ以来、すべてのセルが再描画されるため、呼び出したくありません。

このアニメーションを削除することはできますか?

4

5 に答える 5

51

これは私のために働く:

[UIView setAnimationsEnabled:NO];
[self.tableView beginUpdates];

[self.tableView insertRowsAtIndexPaths:indexPath
                      withRowAnimation:UITableViewRowAnimationNone];

[self.tableView endUpdates];
[UIView setAnimationsEnabled:YES];

お役に立てれば。

于 2014-06-05T18:55:31.940 に答える
2

Swift の例 (私のチャットから)

UIView.performWithoutAnimation {
        messagesTable.insertRows(at: [IndexPath(row: messages.count - 1, section: 0)], with: .none)
    }
于 2020-05-15T10:14:16.447 に答える
0

残念ながら、私はこの同じ問題に遭遇し、アニメーションを削除する方法がありませんでした.

iOS (任意のバージョン) がそれを尊重していないように見えるため、UITableViewRowAnimationNone アニメーション タイプのバグである必要があります。

于 2012-12-17T22:53:51.317 に答える
0

行を手動で挿入する代わりにUITableView の dataSource を更新して呼び出すと[tableView reloadData]、テーブルはアニメーションなしで更新されます。

于 2012-12-17T22:59:05.157 に答える