Я использую Firebase
, чтобы загрузить мои изображения в ячейку ImageView
моей камеры! существует проблема. Я использую механизм кеширования для предотвращения загрузки изображений при загрузке reusable cells
, но изображения не загружаются, пока я не прокрутил свой TableView
.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 надеюсь, что он поможет вам –