tableview单元格中的uicollection视图获取错误:索引超出范围,为什么?

时间:2018-05-29 05:45:43

标签: ios swift uicollectionview

我有一个Venue类型的数组(4项),每个数组包含imgURLs字符串的数组(2项),我得到错误:索引超出范围collectionView cellForItemAt的以下行。我试图在tableview单元格的collectionView中显示每个Venue的图像。

let urlString = filteredVenueArray[collectionView.tag].imgURLs[collectionView.tag]

cellForItemAt功能:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "VenueListingCellImage", for: indexPath) as! VenueListingCellImage

    let urlString = filteredVenueArray[collectionView.tag].imgURLs[collectionView.tag]

    let imgURL = URL(string: urlString)

    cell.configureCell(url: imgURL!)

    return cell
}

编辑:numberOfItemsInSection功能

 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

        return filteredVenueArray[collectionView.tag].imgURLs.count

    }

3 个答案:

答案 0 :(得分:3)

更改此行

let urlString = filteredVenueArray[collectionView.tag].imgURLs[collectionView.tag]

let urlString = filteredVenueArray[collectionView.tag].imgURLs[indexPath.item]

答案 1 :(得分:1)

在您的代码中替换:

  let urlString = filteredVenueArray[collectionView.tag].imgURLs[collectionView.tag]

使用:

  let urlString = filteredVenueArray[collectionView.tag].imgURLs[indexPath.item]

答案 2 :(得分:1)

CollectionView cellForItemAt indexPath通过indexPath对您的数组进行迭代,以便访问您应该使用的每个项目indexPath.item

这是问题,您应该使用,

let urlString = filteredVenueArray[collectionView.tag].imgURLs[indexPath.item]