Firebase
を使用して画像をセルのImageView
にロードしていますが、!問題があります。 reusable cells
がロードされても画像が再ロードされないようにするキャッシュ機構を使用していますが、スクロールしてからTableView
まで画像がロードされません。テーブルビュー画像がスクロールするまでロードされない
ここにコードがあります。
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! TableViewCell
cell.imgv.image = nil
if let urlString = self.filteredFlats[indexPath.row].flatThumbnailImage?.imageDownloadURL
{
imageURLString = urlString
let url = URL(string: urlString)
if let imagefromCache = imageCache.object(forKey: urlString as AnyObject) as? UIImage
{
DispatchQueue.main.async {
cell.imgv.image = imagefromCache
return
}
}
else
{
URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
DispatchQueue.main.async {
let imagetoCache = UIImage(data:data!)
if self.imageURLString == urlString
{
cell.imgv.image = imagetoCache
}
self.imageCache.setObject(imagetoCache!, forKey: urlString as AnyObject)
}
}).resume()
}
}
return cell
}
私はURLSession
は、画像をダウンロードしてImageView
にそれを設定する際に問題があると思うが、上下にスクロールするときにロードされたイメージは、バックと呼ばれるindexpath.row
まで表示されません。
私はそれがこのif文であることを認識しました。
if self.imageURLString == urlString
しかし、私がそれを取り除くと、細胞は再利用可能な細胞の行動を悪化させます。一部のセルでは、古いキャッシュイメージが表示されます。
実際に何が起こっているのか分からない。期待していなかったのは、それ自体が複雑な構造のようなものなのです。TableViews
ありがとうございました。
ImageViewのの拡張を作成このURLを使用して:http://stackoverflow.com/a/37019507/3400991あなたに役立つことを願って –