セルの非同期イメージダウンロードを延期するのは安全ですか?この背後にあるアイデアは、URLSession.shared.image(...)のコールバック関数をセルの作成後に実行し、一度呼び出すcellForRow(at:indexPath)が有効であるようにしたいということです。このメソッドを延期することなくこの時点ではnilを返します。遅延を使用したUITableViewCellでのレイジーイメージのダウンロード
URLSession.shared.imageは、データのタスクを実行し、引数に与えたURLが有効である場合にのみ、エスケープコールバックを与え、画像が含まれているプライベートな拡張機能です。
setImage(image:animated)は、簡単なアニメーションを使用してUIImageViewで画像を設定できるプライベートな拡張です。
延期する方法がない場合は、別の方法を示してください。
フィードバックはありがたいです、ありがとうございます!
override func tableView(_ tableView: UITableView, cellForRowAt
indexPath: IndexPath) -> UITableViewCell {
let cell = baseCell as! MyCell
let datum = data[indexPath.row]
cell.imageView.setImage(placeholderImage, for: .normal)
defer {
URLSession.shared.image(with: datum.previewURL) { image, isCached in
if let cell = tableView.cellForRow(at: indexPath) as? MyCell {
cell.imageView.setImage(image, animated: !isCached)
}
}
}
return cell
}
あなたはそれのためにSDWebImageサードパーティを試しますか? –