在我的 Swift 应用程序中使用 AlamofireImages 在 UITableViewCells 上缓存图像
Posted
技术标签:
【中文标题】在我的 Swift 应用程序中使用 AlamofireImages 在 UITableViewCells 上缓存图像【英文标题】:caching images on UITableViewCells with AlamofireImages in my Swift app 【发布时间】:2016-09-21 00:24:04 【问题描述】:我正在编写一个Swift
应用程序,它会在我的 UITableViewController 的每个单元格上显示从服务器获取的照片。
到目前为止,我的代码如下所示:
func tableView(detailsPanel: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell = detailsPanel.dequeueReusableCellWithIdentifier("cell") as! DetailsCell
let test:SingleTest = self.items[indexPath.row] as! SingleTest
if(test.photo != "")
cell.myPhoto.af_setImageWithURL(NSURL(string: test.photo)!)
现在,问题在于并非每个单元格都将照片存储在cell.photo
中。其中一些是空字符串 (""
)。在那种情况下,当我快速滚动表格视图时,我看到那些空的UIImageView
s 充满了来自其他单元格的照片。
对此的快速修复似乎是添加一个else
块:
if(test.photo != "")
cell.myPhoto.af_setImageWithURL(NSURL(string: test.photo)!)
//this one below:
else
cell.myPhoto.image = UIImage(named: "placeholderImg")
现在只要没有照片,placeHolderImg
就会在那里显示。但是......有没有办法避免它,只是不在那里显示任何东西?不显示任何内容是指不显示来自不同单元格的图像?
【问题讨论】:
【参考方案1】:您正在重复使用您的单元格,因此该单元格仍将使用之前加载的图像,除非您将其设置为 nil 或占位符图像。但是我相信你不需要使用 if 语句。可以使用 af_setImageWithURL 的 placeholderImage 参数。
cell.myPhoto.af_setImageWithURL(NSURL(string: test.photo)!, placeholderImage: image)
【讨论】:
你能告诉我如何将它设置为 nil 吗?我尝试在else
语句中写入:cell.myPhoto = nil
但是当我滚动列表时出现错误fatal error: unexpectedly found nil while unwrapping an Optional value
以上是关于在我的 Swift 应用程序中使用 AlamofireImages 在 UITableViewCells 上缓存图像的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire4在使用方法时抛出“额外参数方法”:.post
如何在 Swift 3 中使用 Alamofire 在 POST 请求中将给定的 JSON 作为参数发送?
在我的 Swift 应用程序中使用 AlamofireImages 在 UITableViewCells 上缓存图像