로드 후 축소판을 보여주는 CollectionView가 있습니다. 처음에는 그림이 장치에 저장되지 않으므로 서버에서 가져옵니다. 콜백 메소드에서 서버에서 이러한 이미지를 가져온 후 셀이 업데이트되지 않으면 스크린에서 스크롤해야합니다. 그런 다음 업데이트됩니다. 나는 다른 애플 리케이션에서 비슷한 메커니즘을 가지고, 거기에 모든 일을 잘하고 차이를 찾을 수 없습니다. 다음은 내가하는 일을 더 잘 이해할 수 있도록 코드의 일부입니다.UICollectionViewCell이 표시되면 이미지를 업데이트하지 않습니다.
이것은 미리보기 이미지가 서버에서 이미 가져온 것인지 확인한 후 이미지를 설정하는 코드입니다. 그렇다면 직접 설정하고 그렇지 않은 경우 Alamofire를 사용하여 그림을 검색하고로드가 끝난 후 업데이트하십시오.
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: self.reuseIdentifier, for: indexPath) as! PictureCollectionViewCell
/* Set thumbnail to the cell */
if let thumbnail = pictures[indexPath.row].thumbnail {
cell.imageView.image = thumbnail
} else {
pictures[indexPath.row].retrievePicture(thumbnail: true, completion: { picture in
cell.imageView.image = picture
})
}
return cell
}
앞에서 설명한 것처럼 보이는 화면 영역 밖으로 셀을 스크롤해야 업데이트됩니다. 셀 또는 collectionView 재로드가 문제를 해결하지 못했습니다. 어떤 아이디어?
미리 감사드립니다.
클로저'retrievePicture()'가 호출 되었습니까? 그 코드는 무엇입니까? – Larme
이미지가 다운로드 될 때까지 셀 표시가 완료됩니다. UI를 새로 고치려면 콜렉션 뷰에서'reloadData()'를 호출해야합니다. – lukya
다운로드가 완료되면 어떤 스레드가 실행됩니까? – Fogmeister