Изображения не отображаются в 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()
}