2011-12-27 3 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

관련 문제