JSON経由でロードしているUITableViewがあります。したがって、私のロジックは次のようになります。
- JSON を取得します (NSOperation、メイン スレッドへのコールバック)
- コールバックで、json を解析し、テーブルのデータ ソース配列に新しいデータを挿入します。
- TableView で reloadData を呼び出して、新しいデータを表示します。
私の質問は次のとおりです。テーブルに新しい行が到着したことをアニメーション化するにはどうすればよいですか? 今、私はそれらすべてを一度に出現させています。私がやりたいのは、それらを所定の位置にアニメーション化することです。
私が使いたいのは次のことだと思います:
[self.theTableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationRight];
しかし、これにより、更新のサイズがデータ ソースのサイズと異なるというランタイムの不満が生じます。
そのメソッドの使用方法について何か不足していますか? このパターンを介して誰かが新しい行を TableView にアニメーション化する例を知っている人はいますか?
更新: 基本的に、Ben のガイダンスのおかげで、次のアプローチでこれを解決しました。
- [self.theTableView beginUpdates] から始めます。
- JSON のエントリをループするときは、配列の先頭に挿入し、ループのたびにインデックスをインクリメントします。
次のように、ループのたびに insertRowsAtIndexPath を呼び出します。
NSIndexPath *indexPath; indexPath = [NSIndexPath indexPathForRow:[self.theChatEntries indexOfObject:message] inSection:0]; [self.theTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:NO];
ループ外の endUpdates で終了します。
うーん。