我有一个数组,其中包含一些UICollectionView
显示的元素。然后我去获取更多元素并将其附加到我的数组中。我想告诉UICollectionView
元素已添加到数据源并更新UI。
我尝试了这个但是没有用:
// Add more data to my existing array
myArray.append(contentsOf: moreElements)
let indexPath = [IndexPath(row: myArray.count-1, section: 0)]
myCollectionView.insertItems(at: indexPath)
我得到了这个error,但我不确定我做错了什么。
编辑:我不想使用myCollectionView.reloadData()
答案 0 :(得分:5)
您的问题是,您需要为要添加到集合视图的每个项目IndexPath
。您向myArray
添加了多个对象,但之后只将IndexPath
传递给insertItems
。这就是错误的原因。
尝试以下方法:
var paths = [IndexPath]()
for item in 0..<moreElements.count {
let indexPath = IndexPath(row: item + myArray.count, section: 0)
paths.append(indexPath)
}
myArray.append(contentsOf: moreElements)
myCollectionView.insertItems(at: paths)
答案 1 :(得分:0)
尝试:
myArray.append(contentsOf: moreElements)
myCollectionView.reloadData()
在numberOfItemsInSection
dataSource方法中:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return myArray.count
}