非常に基本的なことをやろうとしていますが、他の同様の質問で提案されている修正は機能していません。私は画像キャッシュとtableViewを持っています。私はそれが存在する場合は、キャッシュから画像を表示したい、そうでなければ何もないはずです。何らかの理由で、たとえ画像ビューをnilに設定したとしても、tableViewは、間違った画像で再利用されたセルを表示しています。以下は私のコードです:tableView.dequeueReusableCellの最初のステップとしてイメージをnilに設定していても、UITableViewセルに間違ったイメージが表示されています
let cell = tableView.dequeueReusableCell(withIdentifier: "searchCell", for: indexPath) as! SearchResultsTableViewCell
cell.profilePhoto?.image = nil
cell.profilePhoto?.backgroundColor = UIColor.gray
if let userID = myObject.posterId, let profileImage = self.imageCache.object(forKey: userID as AnyObject) {
cell.profilePhoto?.image = profileImage
} else {
if let userId = myObject.posterId {
downloadImage.beginImageDownload() {
(imageOptional) in
if let image = imageOptional {
cell.profilePhoto?.image = image
self.imageCache.setObject(image, forKey: userId as AnyObject)
}
}
}
}
私は間違っていますか?私が最初の一歩としてそれをしているにもかかわらず、私の人生のためにイメージがなぜゼロに設定されていないのか理解できません!
イメージをnilに設定するだけでは不十分です。また、セルを再利用する前にイメージの読み込みをキャンセルする必要があります。 – HMHero
Kingfisherを使って画像をダウンロードすることをお勧めします。 –