0

json の配列で埋められたテーブルビューがあります。ユーザーのプロファイル画像も取得し、配列で埋められたメッセージの隣にロードする必要があります。

ここで 2 つの質問があります。

1>メインスレッドで最初にテーブルビューを埋めてから、メインスレッドから埋められた背景に画像を埋める必要がありますか、それとも上記の手順に対する他の解決策はありますか?

2>画像の読み込みに時間がかかり、誰かがテーブルビューからメッセージをすでに削除している場合、メッセージがある場所に正確に読み込むにはどうすればよいですか。バックグラウンドでの読み込みは省略され、続行されます。または、メッセージと画像の両方が読み込まれるまで、スレッド全体をメインスレッドに保持する必要がありますか?

最適なソリューションまたは実装済みのソリューションを教えてください。この質問は、tableview ios6 アーキテクチャのすべての愛好家と初心者からの問い合わせと考えてください。

上記の質問 ios6 ストーリーボード アーキテクチャに関連するリンク/データを共有してください。

前もって感謝します。

4

1 に答える 1

1

1>メインスレッドで最初にテーブルビューを埋めてから、メインスレッドから埋められた背景に画像を埋める必要がありますか、それとも上記の手順に対する他の解決策はありますか?

すべての UI 変更は、メイン スレッドで行う必要があります。ただし、画像のダウンロード (および角を丸くしたい場合などの処理) は、バックグラウンド スレッドで実行する必要があります。

2>画像の読み込みに時間がかかり、誰かがテーブルビューからメッセージをすでに削除している場合、メッセージがある場所に正確に読み込むにはどうすればよいですか。バックグラウンドでの読み込みは省略され、続行されます。または、メッセージと画像の両方が読み込まれるまで、スレッド全体をメインスレッドに保持する必要がありますか?

テーブル ビューには、データ ソースの内容が反映されます。表のセル以外は何も追跡しません。ユーザーがメッセージを削除し、画像がまだダウンロードされていない場合は、その画像のダウンロードをキャンセルする必要があります。

画像のダウンロードについては、 SDWebImageライブラリをチェックしてみてください。次のように使用できる「setImageWithURL」メソッドを有効にします。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:MyIdentifier] autorelease];
    }

    // Here we use the new provided setImageWithURL: method to load the web image
    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
                   placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    cell.textLabel.text = @"My Text";
    return cell;
}
于 2013-03-22T19:01:15.227 に答える