无效更新:节0中的项数无效.数据源首先更新



我已经阅读并查看了几篇提到这一点的帖子。我尽力跟上,但我还是有问题。

self.items.append(contentsOf: newItems)
let newIndexPath = IndexPath(item: self.items.count - 1, section: 0)

DispatchQueue.main.async {
self.collectionView.insertItems(at: [newIndexPath])
}

Items是我拥有所有项的数组,我正在添加newItems。我打印了一份,我知道有新的项目。所以对于newIndexPath,它将是下一个items.count-1。我尝试使用self.items.count - 1self.collectionView.numberOfItems(inSection: 0)

您是否使用以下委托方法?您的代码非常有限,没有提供太多信息。但是,我认为您正在尝试在不重新加载collectionView数据的情况下更新collectionView部分中的项目数。

更好的做法如下:

extension ViewController : UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.items.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)
else { fatalError("Unexpected cell in collection view") }
cell.item = self.items[indexPath.row]
return cell
}

如果您正在更新项目数组,则追加新项目并重新加载集合View将更新列表。你可以做如下操作:

self.items.append(contentsOf: newItems)
DispatchQueue.main.async {
self.collectionView.reloadData()
}

无需在collectionView中插入新项目。

相关内容

  • 没有找到相关文章

最新更新