2012-04-15 2 views
0

나는 내 자신을 설명하려고 노력할 것이다. 연락처 목록이있는 테이블 뷰 (모델은 Contact 개체의 배열)를 보여주는 ContactsViewController을 가지고있다. 셀이 연락처의 이미지를 표시합니다.사용자가 테이블을 스크롤해도 UITableViewCell에 이미지를 채우는 방법

현재 내가 셀의 UIImageView이있다 채우기 위해 무엇을 :
가 1. 나는 Contact 이미지 속성 게터 무시 - 나는 내가로 설정 이미지 다운로드를 완료 할 때 다음

- (UIImage *)contactImage 
{ 
    if (!_contactImage) { 
     _contactImage = [[UIImage imageNamed:@"placeHolder.png"] retain]; 
     [self asyncDownloadContactImageFromServer]; 
    } 
    return _contactImage; 
} 
  1. 을 재산과 나는 ContactUpdatedImageNotification를 배치한다.

  2. ContactsViewController이 알림을 받고이 연락처의 셀을 다시로드하면 다운로드 한 이미지가 셀의 imageView로 설정됩니다.

이 결과는 사용자가 테이블보기를 스크롤하는 동안 UI를 차단하지 않고 이미지를 양호하게 비동기로 가져 오는 것입니다.
BUT 사용자가 테이블 뷰를 스크롤하고 새로운 셀을 공개하면 새 셀의 이미지가 예상대로 다운로드되지만 셀의 imageView는 사용자가 픽업 할 때까지 새 다운로드 이미지로 업데이트되지 않습니다. 그의 손가락.
다른 스레드에서이 효과를 만들기 위해 뭔가를해야한다고 생각했는데 어떻게 될지 모르겠습니다.

답변

0

헤이 Eyal 님의 URL을 다음 방문 ... 당신은 대답뿐만 아니라 샘플 코드를 얻을 것입니다 ... 이미지가 업데이트되지 않습니다

+0

감사하지만 링크가 깨졌습니다 – Eyal

+0

이 링크를 사용하십시오 ..... >> http://www.raywenderlich.com/multithreading-and-grand-central-dispatch-on-ios-for-beginners- 튜토리얼 – Nit

+0

잘 작동하고 있습니다 ... – Nit

1

이 당신을 도울 것입니다

tableview with different cell with different images

희망 ... 사용자가 스크롤을 멈출 때까지 코드가 기본 runloop에서 실행되기 때문에 스크롤이 끝날 때까지 지연됩니다. 이 다른 질문은 runloops 간의 차이점 인 NSDefaultRunLoopMode vs NSRunLoopCommonModes을 다루며 스크롤하는 동안 이미지를 업데이트하지 않는 것이 좋습니다.주의하지 않으면 스크롤 자체에 경련이 생길 수 있기 때문입니다.

또한 이러한 런 루프 모드의 존재에 대해 알게되었으므로 xcode 설명서 또는 인터넷에서 더 많은 정보를 찾을 수 있습니다.

+0

> 스크롤하는 동안 이미지를 업데이트하지 않는 것이 좋습니다 - 그러면 내가하는 방식이 더 낫다고 말할 수 있습니까? 여전히 스크롤하는 동안 업데이트하는 방법을 사용하지 않았습니까? – Eyal

관련 문제