UICollectionView删除项目问题

时间:2017-02-15 21:03:07

标签: ios iphone swift uicollectionview

我创建了一个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()
        }
    })
}

0 个答案:

没有答案