ios - UICollectionView no reloadData() después de que UIImagePickerController descarta
swift (2)
Lo guardó en Parse, pero no parece que lo esté agregando a su dataSource.
Entonces, si el UICollectionView
de datos de su UICollectionView
de Dog
o DogImage
es una matriz llamada
var dogArray = []
Debes agregar a tu perro a esa matriz en didFinishPickingImage
dogArray.append(imagePicture)
Espero eso ayude
Tengo un pequeño problema porque después de seleccionar una imagen de UIImagePickerController (y guardar en Parse porque mi UICollectionView rellena desde mis imágenes en Parse), mi UICollectionView no cargará la imagen recién guardada hasta que deje viewController y regrese a ella. He intentado casi cualquier trabajo que pueda pensar. ¿Dónde debo poner mi código para guardar y despedir al controlador?
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
let imagePicture = UIImageJPEGRepresentation(image, 0.1)
let imageFile = PFFile(name: "imageFile.jpg", data: image)
let saveImage = PFObject(className: "Gallery")
saveImage["imageFile"] = imageFile
saveImage["dogName"] = self.dogSelectedName
saveImage["userID"] = PFUser.currentUser()?.objectId
saveImage["dogID"] = self.dogObjectID
saveImage.saveInBackgroundWithBlock { (Bool, error) -> Void in
if error != nil {
print("There was an error")
} else {
print("New Gallery object saved: /(saveImage)")
}
}
self.collectionView.reloadItemsAtIndexPaths(self.collectionView.indexPathsForVisibleItems())
self.collectionView.reloadData()
self.dismissViewControllerAnimated(true) { () -> Void in}
}
Después de la eliminación de fallas, noto que muchas veces guarda mi objeto después de que aparece la vista (o dependiendo de dónde escriba el código, antes de que aparezca la vista) y aún no recargo la vista de colección hasta que me vaya y regrese. He puesto:
dispatch_async(dispatch_get_main_queue()) { () -> Void in
self.collectionView.reloadData()
}
En varios lugares en mi código, pero el mismo resultado ... ¿De qué otra manera puedo / debo estar configurando esto? ¡Cualquier ayuda es mucha ayuda! Gracias.
Su función lookUpPhotos
está bien, pero puede actualizar collectionView
al final de su consulta.
func lookUpPhotos() {
let findPhotos = PFQuery(className: "Gallery")
findPhotos.whereKey("dogID", equalTo: self.dogObjectID)
findPhotos.orderByDescending("createdAt")
findPhotos.findObjectsInBackgroundWithBlock {
(objects, error) -> Void in
if let users = objects {
for object in users {
self.photoData.addObject(object)
print("Fetched /(self.dogSelectedName)''s /(self.photoData.count) Images")
}
}
dispatch_async(dispatch_get_main_queue()) { () -> Void in
self.collectionView.reloadData()
}
}
}
Luego puede volver a llamar a la función lookUpPhotos
una vez que envíe los datos.
saveImage.saveInBackgroundWithBlock { (Bool, error) -> Void in
if error != nil {
print("There was an error")
} else {
print("New Gallery object saved: /(saveImage)")
dispatch_async(dispatch_get_main_queue()) { () -> Void in
self.dismissViewControllerAnimated(true) { () -> Void in
self.lookUpPhotos()
}
}
}
}