图像未出现在 PFQueryCollectionViewController 中

Images not appearing in PFQueryCollectionViewController

我正在开发一个 iPhone 应用程序,它应该在 UICollectionView 中显示图像。图片保存在 Parse 云中,我使用 PFQueryCollectionViewController 的子 class 进行查询并显示图片。

点击 MKMapView 标注会触发显示 CollectionViewController 的转场。第一次显示 CollectionViewController 时,图像不会出现在单元格中。但是,如果我回到 MapView,然后 return 回到 CollectionViewController,图像就会出现在单元格中。

如何让图像在第一次显示 PFQueryCollectionViewController 时出现?

这是我的代码:

class PhotoGridCollectionViewController: PFQueryCollectionViewController {

override func viewDidAppear(animated: Bool) {
}

override func viewDidLoad() {
  super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
  super.didReceiveMemoryWarning()
  // Dispose of any resources that can be recreated.
}

// MARK: UICollectionViewDataSource

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
  //#warning Incomplete method implementation -- Return the number of sections
  return 1
}

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
  //#warning Incomplete method implementation -- Return the number of items in the section
  return self.objects.count
}

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFCollectionViewCell? {

  let cell = collectionView.dequeueReusableCellWithReuseIdentifier("venuePhotoThumb", forIndexPath: indexPath) as! PhotoGridCollectionViewCell

  if let pfObject = object {
    cell.imageView.file = pfObject["imageFile"] as? PFFile
    cell.imageView.loadInBackground({ (img, err) -> Void in
      println("Download complete")
    })
  }

  return cell
}

}

因为我使用的是故事板,所以我通过在属性检查器中设置自定义 class 和 parseClass

如您所见,我正在使用 PFImageViewloadInBackground 方法异步加载图片,我认为这个问题可能是图片在单元格已 returned,但我没有任何其他想法。有谁知道为什么第一次显示视图时图像没有出现?

我的合作开发者终于找到了答案。在 cellForItemAtIndexPath 中配置单元格时,我们必须为 PFImageViews 设置占位符图像。 Parse 上的代码示例确实包括设置占位符图像,但他们并没有说 PFQueryCollectionViewController 需要它才能正常工作。我们认为这是一种美感,我们可以稍后再回来。

所以答案是:为了在 PFQueryCollectionViewController 的单元格中正确加载图像,您必须在配置 cellForItemAtIndexPath.

中的单元格时提供占位符图像

这是有效的代码:

let placeholder = UIImage(named: "myPlaceholderImage")  //an image from images.xcassets in your xcode project
cell.imageView.image = placeholder

if let pfObject = object {
    cell.imageView.file = pfObject["image"] as? PFFile
    cell.imageView.loadInBackground()
}