1. ホーム
  2. objective-c

UITableViewのセル/行を1つだけリロードしてアニメーション化する方法は?

2023-10-25 16:56:58

質問

1つのセル/行だけをリロードしてアニメーションさせるにはどうしたらいいですか? 今、私はいくつかのファイルをダウンロードしています。ファイルがダウンロードを終了するたびに、私はそれのfinishedデリゲートを呼び出し、[tableview reload]を呼び出します。 しかし、その後、テーブル全体が再読み込みされます。そして、どのように私はテーブルをアニメーション化することができます、それは点滅していないようにします。たとえば、フェード効果などです。

挨拶 マックス

どのように解決するのですか?

以下を使用します。 UITableView インスタンスメソッドを使用します。

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

を指定する必要があります。 NSArrayNSIndexPaths をリロードしたい。もし再読み込みしたいだけなら もし、一つのセルだけをリロードしたいのなら、そのセルに供給される NSArray をひとつだけ保持する NSIndexPath . 例えば

NSIndexPath* rowToReload = [NSIndexPath indexPathForRow:3 inSection:0];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[myUITableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];

を見ることができます。 UITableViewRowAnimation 列の更新をアニメーション化するためのすべての可能な方法についての列挙です。もしアニメーションが必要ないのであれば、値 UITableViewRowAnimationNone を使用することができます。

特定の行を再読み込みすることは、単に希望するアニメーション効果を得ることよりも大きな利点があります。また、本当に再読み込みする必要があるセルだけが、データを更新し、位置を変更し、再描画されるので、パフォーマンスが大幅に向上します。セルの複雑さによっては、セルを更新するたびにかなりのオーバーヘッドが発生することがあるので、更新の量を減らすことは、可能な限り使用すべき必要な最適化です。