我想在另一个collectionView中有一个collectionView,但是数据来自数组数组,因此numberOfItemsInSection将根据我们正在填充的父单元格而变化。
在cellForItemAt indexPath中:我正在使用以下代码从数组中提取项目:
innerCell.imageCell.file = GlobalParentArray.sharedInstance.globalParentArray[collectionView.tag][indexPath.item].image
仅当numberOfItemsInSection等于或小于数组此级别的项目数时,它才能正确返回数据:
GlobalParentArray.sharedInstance.globalParentArray[collectionView.tag].count
所以我需要numberOfItemsInSection在此计数上是可变的,因为这将返回项目数。我使用.tag属性运气不太好,但是我正在寻找一种方法来使这两个函数计数匹配。
这是我正在使用的实际功能:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if collectionView == self.outerCollectionView {
return self.packArray.count
} else {
//return self.partArray.count
return GlobalParentArray.sharedInstance.globalParentArray[collectionView.tag].count
}
}
当前,因为这是在此行上引发错误:
fatal error: Index out of range
(lldb)
最佳答案
好吧,我走在正确的道路上,解决方案是我以前从未使用过的,甚至知道您可以做的事情。
添加了一个条件来检查数组是否为空,因为它来自异步调用,它在numberOfItems函数后面
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if collectionView == self.outerCollectionView {
print(self.packArray.count)
return self.packArray.count
} else {
if GlobalParentArray.sharedInstance.globalParentArray.isEmpty == false {
return GlobalParentArray.sharedInstance.globalParentArray[collectionView.tag].count
} else {
return 0
}
}
}
显然,这是不断更新的。