当在swift中过滤tableview数组时,tableview单元格中的collectionview不会刷新

时间:2018-05-29 12:26:03

标签: ios swift

我有两个原始数组,以下搜索栏func过滤Venue.name上与搜索文本匹配的数组并重新加载数据。

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    filteredVenueArray = searchText.isEmpty ? venueArray : venueArray.filter({ (venue: Venue) -> Bool in
        return venue.name.lowercased().contains(searchText.lowercased())
    })

    tableView.reloadData()

}

filteredVenueArray数组用于显示TableView中的列表,其中每个单元格中还包含CollectionView

问题是collectionview数据与过滤后的数组不匹配,因此相应单元格Venue的图像不显示。

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

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

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

    let imgURL = URL(string: urlString)

    cell.configureCell(url: imgURL!)

    return cell
}

编辑:要包含cellForRowAt

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    guard let cell = tableView.dequeueReusableCell(withIdentifier: "VenueListingCell", for: indexPath) as? VenueListingCell else { return UITableViewCell() }

    let venueCurrent = filteredVenueArray[indexPath.row]

    cell.configureCell(venue: venueCurrent) 
    cell.selectionStyle = .none

    return cell 

}//end func

1 个答案:

答案 0 :(得分:3)

在tableView的cellForRowAt方法中执行

cell.collectionView.reloadData()
return cell