1

プロジェクトでカバーフローを表示するためにicarouselを使用しています。ラベルと画像ビューを含むカルーセルアイテムとしてuiviewを使用しています。カルーセルのデータはWebサービスへの呼び出しから取得され、そのデータをカルーセルアイテムとして使用したuiviewのラベルと画像ビューにバインドします。問題は、Webサービスからのデータが大きいため、データを読み込んでicarouselにバインドするのに時間がかかるため、アプリがほぼフリーズすることです。今、私が欲しいのは、データを非同期でダウンロードしてicarouselにバインドするようなものです。すぐに表示され、サーバーからのすべてのデータがダウンロードされるまでユーザーが待つ必要はありません。

どんな助けもいただければ幸いです。ありがとう

4

1 に答える 1

0

AFNetworking のようなものを使用して、データの非同期取得を実行することをお勧めします。応答が返ってきたら、返されたすべてのデータ オブジェクトを繰り返し処理し、次の[carousel insertItemAtIndex:index animated:YES];ように呼び出します。

@interface ViewController ()

@property (nonatomic, retain) NSMutableArray *items;

@end

// This is a sample function, actual implementation will look different for you
- (void)callBackFromAsyncWebService:(NSArray*)data 
{
    for (id dataObj in data) {
        [self insertItem:dataObj];
    }
}

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
    return [items count];
}

- (IBAction)insertItem:(id)item
{
    NSInteger index = MAX(0, carousel.currentItemIndex);
    [items insertObject:item atIndex:index];
    [carousel insertItemAtIndex:index animated:YES];
}
于 2013-03-29T15:44:08.083 に答える