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 不显示图像

如何为 UITableViews 裁剪 cell.imageview.image 中的图像?

在表视图图像显示在模拟器,但在我的iPod设备不显示

在 ios 的表格视图单元格中显示图像

UIImageView下如何显示subtext