상쾌하지 좀 재사용과 UICollectionViewFlowLayout
와 collectionView 있습니다. Becouse 나는 이것이 문제라고 생각한다. 목록에서 눈에 보이지 않는 요소로 스크롤하면 "오래된"elemnts를 먼저 볼 수 있었고 새로운 요소를 볼 수있었습니다. 왜 그런가요? 내 tryToShow
메서드는 기본적으로 다운로드 관리자입니다. 나는 그것을 논평에서 설명하려고 노력한다. 여기CollectionView 버튼/이미지 및 시간 문제
-(void)tryToShow {
NSString* imageFile = self.linkToImageFileSavedOnDisk //This is my local file saved in documentsDirectory.
if([[NSFileManager defaultManager] fileExistsAtPath:imageFile]) {
[self.overlayButton setBackgroundImage:[UIImage imageWithContentsOfFile:imageFile] forState:UIControlStateNormal];
[self disableActIn]; //Here i stop and remove activity indicator.
} else {
// Here i fire NSURLConnection and try to download. When NSURLConnection finished i put image to overlayButton.
}
}
위임 방법 : 다음 overlayButton가 UICollectionViewCell
에 버튼이기
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
//Here do some stuff to convert Data into UIImage... not important.
[self.overlayButton setBackgroundImage:object forState:UIControlStateNormal];
}
여기서 코드이다. 나는 그것을위한 커스텀 클래스를 가지고있다.
알아낼 수 없습니다. 스크롤 후 indexPath.row
(예 : 1)의 이미지를 표시하는 방법은 무엇입니까? 새로운 이미지가 성공적으로 다운로드 된 직후 이미지가 새로운 이미지로 바뀌지 만, 늦어집니다.
여기에서 "dequeueReusableCellWithReuseIdentifier"메서드를 사용할 수 없습니다. 요청 응답을 받기 전에 셀을 dequeue하면 잘못된 셀을 새로 고칩니다. 각 셀마다 고유 식별자를 사용해야합니다. – lucaslt89
그래서'dequeue' 대신에 무엇을 사용할 수 있습니까? – Kuba
일반적으로 더 나은 UX를 얻으려면 셀을 캐시해야하므로 사용자가 다운 된 다음 셀로 돌아 오면 요청을 다시 기다릴 필요가 없습니다. 그래서, 내가 그럴 경우 매번 새로운 셀을 만들고, indexPath가 키이고 값이 셀인 사전에 셀을 저장합니다. 그런 다음 캐시에서 셀을로드하거나 캐시되지 않은 경우 새 셀을 만듭니다. – lucaslt89