【发布时间】:2015-12-19 03:05:56
【问题描述】:
我有一个小问题,在从 UIImagePickerController 选择图像后(并保存到 Parse,因为我的 UICollectionView 从我在 Parse 上的图像填充),我的 UICollectionView 将不会加载新保存的图像,直到我离开该 viewController 并返回它。我已经尝试了几乎所有我能想到的解决方法。我应该把我的代码放在哪里来保存和关闭控制器?
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}
}
调试后,我注意到很多时候它会在视图出现后保存我的对象(或者取决于我编写代码的位置,在视图出现之前),并且在我离开并回来之前仍然不会重新加载集合视图。我放了:
dispatch_async(dispatch_get_main_queue()) { () -> Void in
self.collectionView.reloadData()
}
在我的代码中的多个位置,但结果仍然相同。我还能/应该如何设置它?任何帮助都是很大的帮助!!谢谢。
【问题讨论】:
-
你用什么函数来填充你的
UICollectionView? -
让 findPhotos = PFQuery(className: "Gallery") findPhotos.whereKey("dogID", equalTo: self.dogObjectID) findPhotos.orderByDescending("createdAt") findPhotos.findObjectsInBackgroundWithBlock { (objects, error) -> 如果让用户 = 对象 { 对于用户中的对象 { self.photoData.addObject(object) self.collectionView.reloadData() print("Fetched (self.dogSelectedName)'s (self.photoData.count) Images" ) } } }
-
这一切都在一个名为lookUpForPhotos() 的函数中,该函数在viewDidLoad 上调用
标签: ios swift uicollectionview reloaddata