2

に画像をロードするアプリを持っていUITableViewます。各行には画像ビューがあります。

  1. URL から画像をダウンロードし、 に割り当てますUIImageView。ここでの問題は、テーブル ビューをドラッグしていた場合に画像ビューが更新されないことです。指を離したときにのみ更新されます。

  2. 別の問題は、すべてのセルに、タイマーを使用してインクリメントされるカウンターを示すラベルがあることです。指がテーブルビューにあるときにタイマーアクションも呼び出されません。

これらの両方の場合に更新を行うにはどうすればよいですか?

これは非常に基本的な質問かもしれません。しかし、私には手がかりがありません。

みんな、ありがとう!

編集:ビューがタッチされているときに-connection:didReceiveResponse:メソッドが呼び出されないことに気付き

EDIT 2: NSURLConnection で実行ループを追加してみました。私の方法は次のようになります。

- (void)start {

    NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:self.imageURL cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:self.timeoutInterval];
    [request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];  
    _connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];

    NSPort* port = [NSPort port];
    NSRunLoop* rl = [NSRunLoop currentRunLoop]; // Get the runloop
    [rl addPort:port forMode:NSRunLoopCommonModes];
    [_connection scheduleInRunLoop:rl forMode:NSRunLoopCommonModes];
    [_connection start];
    [rl run];
}

これにより、ビューに触れているときでも画像が読み込まれます。しかし、テーブル ビューのスクロールが非常に遅いです。スクロールすらしていません。ドラッグした時だけ動きます。指を離しても動かない。

4

3 に答える 3

0

ここに表示するために画像をダウンロードするので、これはあなたにとって役立つかもしれません.良いチュートリアルリンクを得ることができUItableViewCells なくても、バックグラウンドで何かの例を示してblocking UIいます.彼らは同じことを十分に述べています. このリンクをたどってください

Meera j Paiそして、彼の回答で述べたように、残りのことはの助けを借りて解決できます。

于 2013-05-21T07:35:43.010 に答える
0

NSRunLoopを使用して、 @Amar@Meera J Paiによって与えられた回答を使用して、NSConnectionNSTimerの両方で問題を解決しました。

接続コードを次のように変更しました。

_connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]
[_connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];    
[_connection start];

それはうまくいきました!

みんな、ありがとう。

于 2013-05-23T07:04:26.093 に答える