【发布时间】:2014-08-29 14:05:29
【问题描述】:
我使用带有dequeueReusableCellWithIdentifier 和afnetworking+uiimageview 的表格。我的一些细胞有图像,有些没有。如果我在加载图像之前滚动表格,成功块会将图像放入重复使用的错误单元格中。例如图像在 #2 单元格中,但滚动后它出现在 #8 号单元格中,因为此时 #8 位于第二个位置。 setImageWithURLRequest 可以和dequeueReusableCellWithIdentifier 一起使用吗?
我的代码:
let cell = tableView.dequeueReusableCellWithIdentifier("simpleCell", forIndexPath: indexPath) as UITableViewCell!
cell.textLabel.text = fields[indexPath.row]["name"] as String
cell.imageView.image = nil
if let image = fields[indexPath.row]["image"] as? String {
if (image != "") {
let image_url = NSURL(string: image)
let url_request = NSURLRequest(URL: image_url)
let placeholder = UIImage(named: "no_photo")
cell.imageView.setImageWithURLRequest(url_request, placeholderImage: placeholder, success: { [weak cell] (request:NSURLRequest!,response:NSHTTPURLResponse!, image:UIImage!) -> Void in
if let cell_for_image = cell {
cell_for_image.imageView.image = image
cell_for_image.setNeedsLayout()
}
}, failure: { [weak cell]
(request:NSURLRequest!,response:NSHTTPURLResponse!, error:NSError!) -> Void in
if let cell_for_image = cell {
cell_for_image.imageView.image = nil
cell_for_image.setNeedsLayout()
}
})
}
}
return cell
抱歉,如果我的问题与另一个问题重复。我发现了很多类似的问题,但我还没有找到解决方案。我尝试添加重载
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.None)
进入我的成功块,但它没有帮助。
更新: 我还注意到,当我的所有单元格都有图像时,我没有这个问题。如果我理解正确,原因是:当尝试请求新图像时,AFNetworking 正在中止对同一单元格的先前请求。但如果我在单元格中没有图像,它不会中止。如何手动完成?
【问题讨论】:
标签: ios uitableview swift uiimage afnetworking-2