2011-02-15 3 views
0

나는 thumbnail 이미지와 일부 텍스트를 표시하는 일반적인 UITableView를 가지고 있습니다. tableView : cellForRowAtIndexPath : 목록의 각 항목에 대한 비동기 이미지 다운로드를 시작합니다. 이미지가 다운로드되지만 원하는 방식이 아닙니다. 예를 들어 목록을 쓸어 넘기면 다운로드 요청이 즉시 발생하지만 flick 스크롤에서 스크롤이 완전히 끝날 때까지 connectionDidFinishLoading : 메시지가 실행되지 않습니다. 기본적으로 사용자는 몇 초 동안 빈 이미지를 볼 수 있습니다.UITableViewCell에 대한 비동기 이미지 다운로드는 connectionDidFinishLoading을 발생시키지 않습니다. 스크롤을 멈출 때까지

앱 스토어 앱을 보면, 예를 들어 목록 중 하나를 쓸어 넘기면 스크롤이 멈추지 않아도 이미지가 표시되기 시작합니다. 나는 이것이 어떤 종류의 멀티 스레드 솔루션 때문이라고 가정합니다.

누군가 원하는 결과를 얻을 수있는 방법을 보여줄 수 있습니까?

감사합니다.

답변

0

여기에서 답을 살펴보십시오. 당신은 아마이 작업을 수행 할 필요가 lazy loading images in UITableView iPhone SDK 내가 내 앱의 몇 가지에서의 사용은

+0

애플의 LazyTableImages 샘플 프로젝트가 같은 문제가 있습니다. 목록을 쓸어 넘기면 스크롤이 멈출 때까지 이미지가 표시되지 않습니다. 그것은 내가 풀려고 노력하고있는 전체적인 문제입니다 ... – bpatrick100

+0

이것은 효율성을 위해 수행되었습니다. 코드를 변경하고이를 처리하는 섹션을 제거 할 수 있습니다. "드래그"및 "감속"문을 찾습니다. –

+0

나는 그것을 모두했다. 그것은 문제가 아닙니다. 셀이 표시 될 때 즉시 비동기 이미지 다운로드를 호출하도록 LazyTableImages 샘플 응용 프로그램을 수정했습니다. 내 NSLog 문은 다운로드가 즉시 시작된다는 것을 확인합니다 (스크롤이 끝날 때까지 기다리지 않습니다). 그러나 앞서 말했듯이 스크롤 다운이 끝날 때까지 다운로드 콜백이 실행되지 않습니다. – bpatrick100

1

좋은 작품 :

[_connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; 

가정 _connection이있는 NSURLConnection입니다.

+0

방금 ​​당신의 추천을 시도했지만 똑같은 결과를 얻었습니다 ... – bpatrick100

+0

이것이 우리가 해결 한 방법이기 때문에 이것은 갈 길입니다. 표시되지 않는 경우에는 스크롤이 끝날 때까지 이미지를 지정하지 않았으므로 ScrollView 대리자 메서드를 확인하십시오. – Yorxxx

+0

connectionDidFinishLoading : 내 이미지 다운로드 개체의 메시지는 다운로드를 요청한보기 컨트롤러에 대리인 메시지를 보내고 이미지가 해당 대리인에 표시됩니다. 문제는 스크롤링이 진행되는 동안 connectionDidFinishLoading : 메시지를 수신하지 못했고, 다운로드 요청이 이미 전송되었다는 것입니다. 화면의 아무 곳이나 두 드리더라도 손가락을 아래로 잡고 있어도 놓을 때까지 새로운 이미지가 그려지지 않습니다.내보기 컨트롤러에 논리 검사가 있기 때문에 아닙니다. 내보기 컨트롤러가 알림을받지 못하기 때문입니다. – bpatrick100

관련 문제