我创建了一个CollectionView,用于显示相机胶卷中的照片,就像iPhone的默认照片应用程序一样(每张照片一个单元格)
我需要实现删除功能,因此我成功创建了删除操作。问题是当我尝试重新加载集合视图的数据时。
举个例子,我想模仿删除时默认的照片应用行为。
下面我有崩溃的代码。它在成功删除操作后执行。
func removeFromCollectionView() {
let ip = self._collectionView.indexPathsForVisibleItems
self._itemsCount? -= 1
_collectionView.deleteItems(at: ip)
_collectionView.performBatchUpdates({
self._collectionView.reloadItems(at: ip)
}, completion: nil)
}
错误是:
此应用程序在从主线程访问引擎后从后台线程修改autolayout引擎。这可能导致引擎损坏和奇怪的崩溃。
另外,我试图将代码包装成
DispatchQueue.main.async { }
我试图解释如果你需要更多,请告诉我,有没有人有想法?提前致谢。
修改 我根据评论做了以下更改。代码不会崩溃,但不会删除照片
func removeFromCollectionView() {
let ip = self._collectionView.indexPathsForVisibleItems
self._itemsCount? -= 1
_collectionView.performBatchUpdates({
self._collectionView.deleteItems(at: ip)
}, completion: { finished in
if finished {
print("finished")
self._collectionView.reloadData()
}
})
}