numberOfItemsInSection

numberOfItemsInSection

我想在另一个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
        }
    }
}


显然,这是不断更新的。

09-06 06:59