UICollectionView 数据源更新顺序

UICollectionView datasource update order

所以我有一个 UICollectionView,数据源只是一个简单的数组:

private(set) var selectedItems = [Item]() {
    didSet {
        updateTitle()
        adjustSelection()
    }
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return selectedItems.count
}

删除项目的正确顺序是什么,首先从集合视图还是从数据源?

func removeItemFromSelection(_ item: Item) {
    guard let index = selectedItems.firstIndex(of: item) else {
        return
    }

    collectionView?.deleteItems(at: [IndexPath(item: index, section: 0)])
    selectedItems.remove(at: index)
}

所以

collectionView?.deleteItems(at: [IndexPath(item: index, section: 0)])
selectedItems.remove(at: index)

selectedItems.remove(at: index)
collectionView?.deleteItems(at: [IndexPath(item: index, section: 0)])
  

你是否知道这方面的任何文档?

第一个变体在 iOS 12.

崩溃

总是先修改模型再更新视图

selectedItems.remove(at: index)
collectionView?.deleteItems(at: [IndexPath(item: index, section: 0)])

视图遵循模型,这只是一个规则。

填充数据源时,首先将数据分配给数组,然后调用 reloadData()