0

iCloudに画像があり、それらのUIDocumentをサブクラス化しました。ViewControllerがロードされた後、UITableViewに画像を表示したいと思います。viewDidLoadだから私はメソッド内にこのコードを追加しました

- (void)viewDidLoad    
    {
        ...
              iCloudImage *iClImage = [[iCloudImage alloc] initWithFileURL:ubiquitousPackage];
              [iClImage openWithCompletionHandler:^(BOOL success) {
                if (success) {                
                    NSLog(@"iCloud document opened");
                    dataFromFileManager = [iClImage.imageDictionary objectForKey:img.fileName];
                    imageToDraw = [[[UIImage alloc] initWithData:dataFromFileManager] autorelease];
                } else {                
                    NSLog(@"failed opening document from iCloud");    
                    imageToDraw = [UIImage imageNamed:@"defaultImage.jpg"];
                }
                [arrayOfImages addObject:imageToDraw];
            }];
        ...
    }

ここでは、すべての画像を 1 つずつ収集しNSMutableArray *arrayOfImages、その配列を- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathメソッドで使用しています。ただし、別のスレッドでダウンロードしているため、表には表示されません。画像がダウンロードされた後、またはデフォルトの画像が設定された後にのみ、それを修正して UITableView の表示を開始するにはどうすればよいですか?

4

1 に答える 1

2

私は最近同じ問題を抱えていました。画像がダウンロードされるまでビューの読み込みを待つのではなく、テーブルに進行状況インジケーターを表示しました。次に、画像が読み込まれたときに、進行状況インジケーターを削除してデータを読み込むように通知する NSNotification をビューに送信しました。

このようにして、UI の応答性を維持し、何かが実際に読み込まれていることをユーザーに示します。技術的な詳細が必要な場合はお知らせください。

于 2012-06-08T11:07:40.203 に答える