3

テーブルビューコントローラーに「fetchEntries」という名前のメソッドがあり、Web サービスからフェッチしてデータを配置しています。また、このメソッドを別のメソッドから呼び出すことでインクリメントしている「pageNumber」という名前のパラメーターも取得しています。この pageNumber は、実際には RSS フィードのさまざまなページからデータを取得しています。

- (void) fetchEntries:(NSInteger )pageNumber
{ 
        channel = [[TheFeedStore sharedStore] fetchWebService:pageNumber withCompletion:^(RSSChannel *obj, NSError *err){

            if (!err) {
                int currentItemCount = [[channel items] count];
                channel = obj;
                int newItemCount = [[channel items] count];

                int itemDelta = newItemCount - currentItemCount;

                if (itemDelta > 0) {

                    NSMutableArray *rows = [NSMutableArray array];

                    for (int i = 0; i < itemDelta; i++) {
                        NSIndexPath *ip = [NSIndexPath indexPathForRow:i inSection:0];
                        [rows addObject:ip];
                    }
                    [[self tableView] insertRowsAtIndexPaths:rows withRowAnimation:UITableViewRowAnimationBottom];
                    [aiView stopAnimating];
                }
            }
        }];
    [[self tableView] reloadData];

}

それは絶対にうまくいっています。たとえば、pageNumber が 1 で、テーブルビューにデータをロードしているときに問題が発生します。画像が含まれているためにプロセスがまだ完了していない場合、pageNumber を 2 にインクリメントすると、ロードが停止します。ページ 1 からエントリをロードし、ページ 1 を完了することなくページ 2 のロードを開始します。

質問: 1) 「insertRowsAtIndexPath」メソッドが、ページ 1 エントリが終了するインデックスから始まるページ 2 エントリのロードを開始するようにカスタマイズできる方法はありますか。2)または、それらを別々のスレッドに配置して、独立して機能し、両方を同時に実行できる方法はありますか。

どんな助けでも大歓迎です。前もって感謝します。

4

0 に答える 0