我为我的应用程序使用了照片 Collection View 。 我很容易从 Collection View 中删除了项目,但它不会立即从 Collection View 中删除项目。如果我转到另一个 View Controller 并返回到 Collection View Controller ,那么它会更新并从 Collection View 中删除已删除的项目。我希望在发生删除操作时立即更新 Collection View 。我怎么解决这个问题?提前致谢。 我的快速代码如下:
import UIKit
import Photos
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate{
var assetCollection: PHAssetCollection = PHAssetCollection()
var photosAsset: PHFetchResult!
var assetThumbnailSize:CGSize!
var selectedIndexPath = [NSIndexPath]()
@IBAction func deleteButton(sender: UIButton) {
if selectedIndexPath.count != 0{
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
//Delete Photo
if let request = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection){
for a in self.selectedIndexPath{
request.removeAssets([self.photosAsset[a.item]])
}
}
}, completionHandler: nil)}
self.collectionView.reloadData()
}
这是我的 viewWillAppear 方法:
override func viewWillAppear(animated: Bool) {
// Get size of the collectionView cell for thumbnail image
if let layout = self.collectionView.collectionViewLayout as? UICollectionViewFlowLayout{
let cellSize = layout.itemSize
self.assetThumbnailSize = CGSizeMake(cellSize.width, cellSize.height)
}
self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
if let photoCnt = self.photosAsset?.count{
if(photoCnt == 0){
self.noPhotosLabel.hidden = false
}else{
self.noPhotosLabel.hidden = true
}
}
self.collectionView.reloadData()
}
最佳答案
您需要在完成处理程序中添加重新加载方法。
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
//Delete Photo
if let request = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection){
for a in self.selectedIndexPath{
request.removeAssets([self.photosAsset[a.item]])
}
}
}, completionHandler: { _ in
self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
dispatch_async(dispatch_get_main_queue(), { self.collectionView.reloadData() })
})
关于swift - 从 UICollectionView 中删除项目后更新/重新加载 Collection View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40846708/