UICollectionView - insertItems(at:indexPath)不起作用

Posted

技术标签:

【中文标题】UICollectionView - insertItems(at:indexPath)不起作用【英文标题】:UICollectionView - insertItems(at: indexPath) not working 【发布时间】:2017-08-12 20:10:03 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您的问题是您添加到集合视图中的每个项目都需要一个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)

【讨论】:

我收到一个错误,因为我有一个页脚:no UICollectionViewLayoutAttributes instance for -layoutAttributesForSupplementaryElementOfKind: UICollectionElementKindSectionFooter 这是一个全新的问题,超出了您在此问题中提出的问题。一次专注于一个问题。 好的。您的解决方案效果很好(当没有页脚时)。我将不得不弄清楚我的页脚还发生了什么。

以上是关于UICollectionView - insertItems(at:indexPath)不起作用的主要内容,如果未能解决你的问题,请参考以下文章

折叠UICollectionView

-[UICollectionView _endItemAnimations] 中的 UICollectionView 断言失败

如何滚动另一个 UICollectionView 下方的 UICollectionView?

UICollectionView 单元内部已加载,但 UICollectionView 未显示

UICollectionView 断言失败 -[UICollectionView _updateWithItems:tentativelyForReordering:]

UITableviewCell 中的 UICollectionView。添加约束后,UICollectionView 不显示