10

UITableViewを使用- (void)beginUpdatesしている場合- (void)endUpdates、呼び出し内でデータソースを変更する必要がありますか?

すなわち

運転のNSMutableArray電話がかかってきたら、私はこれを行うことができます...dataSourcetableView

// edit the actual data first
[dataSource addObject:@"Blah"];

// now update the table
[self.tableView beginUpdates];

[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:dataSource.count - 1 inSection:0] withRowAnimation:UITableViewRowAnimationAutomatic];

[self.tableView endUpdates];

それともやる必要がある...

[self.tableView beginUpdates];

[dataSource addObject:@"Blah"];

[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:dataSource.count - 1 inSection:0] withRowAnimation:UITableViewRowAnimationAutomatic];

[self.tableView endUpdates];

更新している場所がいくつかあり、一般的なコードを関数に取り出す可能性があるため、尋ねるだけです。

ただし、更新呼び出しの外で更新できる場合に限ります。

4

4 に答える 4

3

私もこれに出くわしたばかりで、何が最善の方法なのかわかりません。ただし、公式ドキュメントのTable View Programming Guideには、これに関する情報が記載されています。「バッチ挿入および削除操作の例」では、次のことが言及されています。

テーブル ビューで行とセクションのグループを挿入および削除するには、まず、セクションと行のデータ ソースとなる配列 (または配列) を準備します。行とセクションを削除して挿入すると、結果の行とセクションがこのデータ ストアから取り込まれます。

お役に立てれば。そして、誰かがそれをよりよく説明できるなら、私はこれをより明確に学びたいと思っています.

于 2013-09-12T03:32:43.793 に答える
3

私は常に最初のアプローチを使用してきましたが、問題はありません。データソースを変更した後、すぐにテーブルを更新してください。

于 2013-08-28T08:12:14.503 に答える
2

データソースの更新は begin/end 呼び出し内にある必要があるというルールはありません。データソースを更新した後、必要に応じて行を挿入/削除して、長期的に問題が発生しないようにしてください。

于 2013-08-28T08:32:55.673 に答える