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()
。
所以我有一个 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()
。