我在应用程序中有以下实现,其中有一个表视图,其中每个表视图单元格都包含一个集合视图。
在这里,集合视图中单元格的数量将取决于表视图单元格中的数据,并且每一行都会有所不同。例如,第一行有3张卡片,第二行有1张卡片,第三行有2张卡片。
问题是我要获得3个集合视图单元,而不是第二个单元中的1个。
表格视图
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.groupedJobIds.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: JobTableViewCellCollection.CellReuseIdentifier) as? JobTableViewCellCollection {
var jobIds = self.groupedJobIds[indexPath.row]
cell.delegate = self
if jobIds != [] {
cell.bindJobs(jobIds)
}
return cell
}
return UITableViewCell()
}
Tableview单元格/“收藏夹”视图
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.jobIds.count //It returns 1
}
//This method is called 3 times
func collectionView(_ collectionView: UICollectionView,
cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: JobCollectionViewCell.CellReuseIdentifier, for: indexPath) as? JobCollectionViewCell
cell?.delegate = self
cell?.bindJob(jobId)
return cell!
}
如您所见,第一个方法返回1作为numberOfItemsInSection。但是第二种方法称为3次。我想念什么吗?
答案 0 :(得分:0)
我认为您正在使用表视图的dequeueReusableCell
方法,这引起了问题。
每次加载时,您能否在表视图上尝试新的集合视图?
答案 1 :(得分:0)
您应该从正确的来源填充UICollectionView。在您的代码中,您将填充来自同一self.groupedJobIds
的所有集合视图单元格。您应该从表视图单元格中绑定的jobId填充集合视图,或者在UIViewController中保留一个jobId组数组,然后从那里填充。
答案 2 :(得分:0)
我找到了解决方案。我错过了导致问题的集合视图上的 reloadData()