2011-12-27 4 views
1

イメージをロードしようとするUIImageViewがあります。存在しない場合はイメージをダウンロードするために呼び出します。イメージがダウンロードされると、NSNotificationが送信され、UIImageView.imageがダウンロードされたイメージに設定されます。これは動作していますが、イメージがUIImageViewに表示されるように設定されてから数秒かかります。遅延は画像のダウンロードではないので、画像がダウンロードされた後に通知が再度送られる。UIImageView.imageはNSNotificationで設定すると数秒で表示されます

- (void)recieveImageDownloadUpdate:(NSNotification *)notification { 

if ([[item valueForKey:@"FlipBookPhotoID"] intValue] == imgView1.tag) { 
     // this loads the image if the tag on the UIImageView matches the notification update 
     imgView1.image = [Helpers getImageDownloadIfMissing:[[item valueForKey:@"PhotoName"] stringByReplacingOccurrencesOfString:@"_lg" withString:@""] withManufacturer:[item valueForKey:@"ManufacturerID"] withFlipBookID:[item valueForKey:@"FlipBookID"] withFlipBookPhotoID:[item valueForKey:@"FlipBookPhotoID"] shouldDownload:NO ]; 

    } 
} 

このすべてが有効になってページングとUIScrollViewのに使用され、私はこれらの画像は、通知後すぐに表示するのですかどのように:ここで

は通知です。

+0

あなたは、私はそれをした – Ali3n

+0

...詳細を提供することができますそれを捕らえたはずです。私の更新通知はdispatch_async(dispatch_get_global_queue(0、0)、^ {})から来ていました。それが私を直してくれた。ありがとう! – Slee

答えて

5

おそらく、あなたはメインスレッドでそれを設定していません。すべてのUI作業をそこで行う必要があります。

- (void)recieveImageDownloadUpdate:(NSNotification *)notification { 
    if ([[item valueForKey:@"FlipBookPhotoID"] intValue] == imgView1.tag) { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      imgView1.image = [....] 
     }); 
} 

は}

+0

を更新するには、画面を強制的に呼び出す必要がある方法があれば、ちょうど思っていたコードのトンがある – Slee

関連する問題