@IBOutlet weak var itemImage: PFImageView!
override func tableView(tableView: (UITableView), cellForRowAtIndexPath indexPath: (NSIndexPath!), object: PFObject!) -> PFTableViewCell? {
var cell = tableView.dequeueReusableCellWithIdentifier("PFTableViewCell") as! ItemViewCell!
let items = object as! Items
let thumbnail = items.valueForKey("itemImage") as! PFFile!
cell.itemImage?.file = thumbnail
return cell
}
当我运行它时,PFTableViewController只是无限加载。
评论:
cell.itemImage?.file = thumbnail
将加载TVC但没有加载图像。我在故事板中为每个连接/插座提供了必要的功能。
答案 0 :(得分:1)
如果您尝试在tableView中的单元格内显示UIImageView中的图像,则给出的答案将引发错误,因为您只为其分配了一个UIImage实例。
要解决此问题,您需要将UIImageView插座分配给.image 如下图所示;
cell.itemImage.image = image
在我的测试项目中有效的完整解决方案如下;
if let pic = items.objectForKey("itemImage") as? PFFile
{
pic.getDataInBackgroundWithBlock(
{ (data: NSData?, error: NSError?) -> Void in
if((error) == nil && data != nil)
{
if let image = UIImage(data: data!)
{
cell.itemImage.image = image
}
}
else { NSLog("Error loading profile image in cell") }
}
})
编辑:正如前一篇文章的评论中所提到的,您还需要在数据显示之前重新加载tableView,因为tableView几乎总是在此示例中的图像之前加载。
您可以通过添加;
来完成此操作tableView.reloadData()
在你的功能结束时
答案 1 :(得分:0)
我认为你需要调用getDataInBackground来获取实际的PFFile数据,然后你可以从你从查询中获取的NSData对象创建一个UIImage。
if let pic = items.objectForKey("itemImage") as? PFFile
{
pic.getDataInBackgroundWithBlock(
{ (data: NSData?, error: NSError?) -> Void in
if((error) == nil && data != nil)
{
if let image = UIImage(data: data!)
{
cell.itemImage = image }
}
else { NSLog("Error loading profile image in cell") }
}
})
这假设你的UITableViewCell子类有一个属性“itemImage”。