Изображения не отображаются в PFQueryCollectionViewController

Я работаю над приложением для iPhone, которое должно отображать изображения в UICollectionView, Изображения сохраняются в облаке Parse, и я использую подкласс PFQueryCollectionViewController сделать запрос и отобразить изображения.

Постукивая по MKMapView выноска вызывает переход, который показывает CollectionViewController, Изображения не появляются в ячейках при первом CollectionViewController представлена. Однако, если я вернусь к MapView, а затем вернитесь к 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
}

}

Поскольку я использую раскадровки, я передаю свой пользовательский класс parseClass установив его в Инспекторе атрибутов:

Как видите, я использую loadInBackground метод PFImageView загружать изображения асинхронно, и я думаю, что эта проблема может быть вызвана изображениями, загружаемыми после возвращения ячейки, но у меня нет других идей. Кто-нибудь знает, почему изображения не появляются при первом представлении представления?

1 ответ

Решение

Мой со-разработчик наконец нашел ответ на этот вопрос. Мы должны были установить изображение заполнителя для PFImageViews при настройке ячеек в cellForItemAtIndexPath, Примеры кода на 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()
}
Другие вопросы по тегам