cell.imageView 不显示图像
Posted
技术标签:
【中文标题】cell.imageView 不显示图像【英文标题】:cell.imageView not showing an image 【发布时间】:2014-09-28 08:42:24 【问题描述】:我有一个 tableView,我试图在 cell.imageView 中显示图像,但无论我做什么都不会显示图像。 imageView 的子类是 PFImageView。我已经检查过 PFFile 和 UIImage 不为零。我做错了什么?
这是我迄今为止尝试过的:
转换为 UIImage
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!, object: PFObject!) -> PFTableViewCell!
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as PFTableViewCell
cell.textLabel?.text = object.objectForKey("title") as NSString
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd" // superset of OP's format
let str = dateFormatter.stringFromDate(object.createdAt)
cell.detailTextLabel?.text = str
var theFile:PFFile = object.objectForKey("image") as PFFile
theFile.getDataInBackgroundWithBlock
(imageData: NSData!, error: NSError!) -> Void in
if error == nil
let image = UIImage(data:imageData)
dispatch_async(dispatch_get_main_queue())
cell.imageView?.image = image
return cell
【问题讨论】:
您知道“if error == nil”子句中的代码执行了吗?如果有错误,您应该添加一个“else”块来记录错误。我很确定您也不需要 dispatch_async;据我了解,完成块在主线程上运行。 【参考方案1】:您正在从一个闭包中设置图像,该闭包很可能不在主线程中运行。你应该把你的代码放在dispatch_async
:
dispatch_async(dispatch_get_main_queue())
cell.imageView?.image = image
我认为这是问题所在,但我当然无法测试它,因为我没有您的所有资源可供我使用。无论哪种方式,即使这不能解决问题,你也必须这样做,因为 UI 组件必须从主线程更新。
【讨论】:
我更新了代码,在 cell.imageview 行上出现以下错误:无法将表达式类型 '(dispatch_queue_t, 0 -> () -> $t3)' 转换为 typr ()跨度> 这是因为可选的链接表达式计算为非 Void 值。由于这是一个单表达式闭包,它将隐式地从闭包中返回该值,这并不期望它。你必须解开可选的。 @TomErikStøwer 的评论应该可以解决该编译问题。但是,您应该避免使用(代码输入)答案来编辑您的原始问题 - 这会使答案让读者感到困惑。既然我的建议包含在您的问题中,我的回答似乎毫无用处并且可以拒绝投票。在这种情况下,最好在原始问题下方添加更新部分,或者至少添加一条说明,说明原始代码已根据答案进行了修改。 @Antonio 没有帮助我 好的,知道了(cell.imageView?.image = image)!
以上是关于cell.imageView 不显示图像的主要内容,如果未能解决你的问题,请参考以下文章
如何在 NSArray 的 cell.imageview.image 中显示图像?
带有 UIImageView 的自定义 UITableViewCell 不显示图像