0
から項目を削除した後、私は私のアプリのための写真のコレクションビューを使用していました。 コレクションビューからアイテムを簡単に削除できましたが、コレクションビューからアイテムを即座に削除することはありません。私が別のビューコントローラーに行き、コレクションビューコントローラーに戻ると、コレクションビューが削除されたアイテムを更新して削除します。私は、削除操作が発生するとすぐにコレクションビューを更新したい。どうすればこの問題を解決できますか?前もって感謝します。 は私の迅速なコードは以下のとおりである:ここでは更新/リロードコレクションビューUICollectionView
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()
}
私はあなたのアドバイスに応じて試してみましたが、それは動作しません。私は私の質問で説明したものと同じ問題の問題に直面しています。あなたが私にさらに助言を与えるなら、私は感謝します。ありがとうございました。 –
一方または両方のコレクションビューのデータソースメソッドが動的ではないため、更新されない可能性があります。補完ハンドラでself.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection、options:nil)を続けてself.collectionView.reloadData()を追加して、改善されているかどうか教えてください。私はこの考え方で私のソリューションを更新しました。 – gwinyai
これは機能しますが、コレクションビューの削除や更新には10〜15秒ほどの時間がかかります。それは、この "0 CoreFoundationの0x24d7b933 + 150 \tを示しても「これは、将来のリリースで例外が発生します。このアプリケーションは、エンジンの破損や奇妙なクラッシュにつながることができ、バックグラウンドスレッドから自動レイアウトエンジンを変更している」とのような警告を示してい1 libobjc.A.dylib 0x24516e17 objc_exception_throw + 38 \t 2 CoreFoundation 0x24d7b861 + 0 \t 3 Foundation 0x2566d3e7 + 170 "タイプ。この問題を解決するためのアドバイスをお願いします。 –