UICollectionView - insertItems(at:indexPath)无效

时间:2017-08-12 20:10:03

标签: ios swift uicollectionview

我有一个数组,其中包含一些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()

2 个答案:

答案 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
}