Swift CollectionView(严重错误:索引超出范围)

时间:2018-09-17 01:45:30

标签: ios arrays swift uitableview uicollectionview

我正在UITableView的每个单元格内实现UICollectionView 现在,我正在从API获取数据并将此数据保存在数组中,问题是,即使在数组填充数据之前,当然也会调用UICollectionView委托方法numberOfItemsInSection,因此我得到了索引超出范围错误。 问题是如何为返回的计数赋予默认值,或者如何使数组变异。 这是我正在使用的代码:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
  //  let cell = collectionView.superview as! MainTableViewCell
 //   let index = tableView.indexPath(for: cell)
    let countIndex = self.consultations[collectionView.tag].images.count

    return countIndex
}

2 个答案:

答案 0 :(得分:0)

您需要检查找到的数组及其计数。

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if let consultationsTmp = self.consultations, let colTag = consultationsTmp[collectionView.tag],let imagesTmp = colTag.images
            {
      return imagesTmp.count
            }
return 0
}

答案 1 :(得分:-1)

我用另一种方法解决了这个问题。

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    let cell = collectionView.superview?.superview?.superview as! MainTableViewCell
    print("SSSSSSSSSSSSSSSSS\(cell)")
    let index = self.tableView.indexPathForRow(at: cell.center)
    print("EEEEEEEEEEEEEE\(index?.row)")
    let countIndex = self.consultations[index?.row ?? 00].images.count

    return countIndex
}