ios swift uicollectionview reloaddata

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() } } } }