1

無限の UITableView を実装しようとしています。サーバーからいくつかの情報をチャンクでロードし、ユーザーがテーブルをスクロールしたときに、この情報をテーブルビューに動的に追加したいと考えています。

私が直面している問題: 40 個の要素を持つ最初のテーブルビューがあり、scrollViewDidScroll最後に表示されている行の indexPath == かどうかを確認[myData count] - 20します (したがって、ユーザーがリストの半分を既にスクロールしている場合、次のコンテンツをロードします) コンテンツの次の 40 要素をロードしますサーバーから、last visible row's indexPath == [myData count] -1実際にテーブルビューをリロードしたときのみ。ご覧のとおり、テーブルビューのリロードを高速化するために熱心なキャッシュを作成します。すべてが完全に機能しますが、テーブルをスクロールし始めると、データの読み込みが非常に速く停止しました。このチェック:last visible row's indexPath == [myData count] - 20スクロールが速いため、実際には実装する機会がないようです。これに関する他の明白な理由はわかりません。では、誰かがこの奇妙な問題に対する答えを持っていますか?

reloadRowsAtIndexPathsPSまたは、テーブル全体をリロードする代わりに試してみるべきでしょうか?

4

1 に答える 1

1

たぶん、このデリゲートを使用すると、事前に何かを行うチャンスがあります。データをリロードするよりも優れている、表示されている行のみをリロードすることもできます。

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    NSArray *paths = [self.tableView indexPathsForVisibleRows];
    int tmprow = [[paths objectAtIndex:0] row];
}
于 2013-09-12T18:20:19.917 に答える