2011-04-13 5 views
1

일반적인 TableView 데이터 다시로드 문제가 발생했습니다. 나는 같은 주제에 대해 많은 질문을 읽었지 만 문제는 내 것과 정확히 똑같은 것이 아니 었습니다 ...iPhone : UITableView reloadData 타이밍 문제

나는 네비게이션 기반 응용 프로그램을 가지고 있습니다. RootViewController의 viewDidLoad 메소드에서 JSON 데이터 (기사)를 얻기 위해 요청을한다. 연결이 완료되면 각 항목에 대해 사용자 정의 기사 객체를 만듭니다. Article 클래스에는 객체의 속성을 초기화하는 initWithDictionnary 메소드가 있으며 가장 중요한 것은 이미지 다운로드 요청을 생성하는 것입니다. 연결이 완료되면 기사 객체의 이미지 속성을 설정합니다. 목표는 다운로드 한 이미지로 cell.imageView.image 속성을 초기화하는 것입니다. 이 시점에서 문제가 무엇인지 짐작할 수 있습니다. 이미지는 셀 이미지가 렌더링 된 후에 다운로드되므로 셀이 다시로드 될 때까지 공백으로 유지됩니다 (예를 들어 화면에서 벗어난 다음 다시 돌아 오는 경우). 특정 시간에 reloadData를 호출해야한다고 생각하지만 언제 알 수 없습니다. 이상적으로는 모든 셀이로드 될 때 호출하지만 가능하지는 않습니다. 셀이로드 될 때까지 기다리는 것과 이전의 셀을 다시로드하려고 시도하는 것과 같은 미친 일들을 시도했지만 작동하지 않았습니다. Q & 읽기 A Apple의 LazyTableImage 샘플 코드에 대해 알았지 만 모든 내용을 이해할 수 없어 사용해야한다고 확신하지 못했습니다.

자세한 내용은 저에게 문의하십시오.

미리 도움을 청하십시오.

+0

사용 비동기 이미지로드. – Till

+0

좋아, 한번 해보겠습니다. 고맙습니다. – teum

답변

1

이미지를 비동기 적으로로드해야합니다. 테이블 데이터에는 이미지가로드되었는지 여부를 지정하는 행 당 필드가 있어야합니다 (true 인 경우).로드를 건너 뛰고 캐시 된 이미지 만 표시 할 수 있습니다. 먼저이 질문에

봐 : Load images async

+0

그 방법으로 이미지를 다운로드 중입니다 : NSURLRequest * request = [NSURLRequest requestWithURL : [NSURL URLWithString : imageUrl]]; [NSURLConnection alloc] initWithRequest : 위임을 요청하십시오 : 자체];'본질적으로 비동기가 아닌가요? – teum

+0

그것은 비동기 적입니다 (데이터를 포착하기위한 델리게이트를 제공함). 그러나 요청에서 NSData를 읽을 때 그것은 sinchronously 발생합니다. 희망이었습니다. –

+0

예, 요청에서 NSData를 읽는 것은 동 기적으로 발생하므로 이미지로드는 적시에 완료되어야합니다. 이것은 정확하게 나의 문제입니다. 나는 애플에 의해 주어진 게으른 이미지 로딩 코드 예제를 따르기로 마침내 선택했다. 어제 내 응용 프로그램에 맞춰 보았지만, 같은 문제가 여전히 남아 있습니다. (셀이 화면에서 나오고 다시 들어올 때만 이미지가로드됩니다.) 오늘 조사 할 것입니다. – teum

0

약 10 좋은 게으른로드 이미지 jQuery과 자습서가 있습니다. 하나를 선택.

잠시 후 튜토리얼을 검토하면 문제가 생길 수 있습니다. 이 프로젝트를 위해서뿐만 아니라 프로그래밍 경력의 나머지 부분에 대해서도 중요한 개념입니다. TTImageView (Three20 프레임 워크)와 같은 테이블 세포 내

Lazy Loading Image UITableView Tutorials that'll make you smarter!