私はセル内にイメージを表示するtableViewを持っています。ほとんどの場合、正しい画像が表示されますが、間違った画像が表示されることがあります(通常、tableViewをすばやくスクロールすると通常は表示されます)。イメージを非同期でダウンロードします。UITableViewセル内のurlからの非同期イメージの読み込み - スクロール中に間違ったイメージのロード
cell.profImg.getImgFromUrl(link: man.img, contentMode: cell.profImg.contentMode)
そして、ここで私は、非同期要求を行います。
extension UIImageView {
func getImgFromUrl(link link:String, contentMode mode: UIViewContentMode) {
guard
let url = NSURL(string: link)
else {return}
contentMode = mode
NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: { (data, response, error) -> Void in
guard
let httpURLResponse = response as? NSHTTPURLResponse where httpURLResponse.statusCode == 200,
let mimeType = response?.MIMEType where mimeType.hasPrefix("image"),
let data = data where error == nil,
let image = UIImage(data: data)
else { return }
dispatch_async(dispatch_get_main_queue()) {() -> Void in
self.image = image
}
}).resume()
}
}
速いスクロールでは、非同期リクエストが終了するまでにセルがデキューされ、別のセルに再利用される可能性があるため、間違ったセルが更新されるという問題があると思います。 – Wolverine
自己画像とは何ですか?あなたがこれを使う時? – Lion
あなたはswiftを使用していますので、画像の遅延読み込みのためにhttps://github.com/onevcat/Kingfisherライブラリを使用することをお勧めします。 – Wolverine