我有两个原始数组,以下搜索栏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
答案 0 :(得分:3)
在tableView的cellForRowAt
方法中执行
cell.collectionView.reloadData()
return cell