我在同一个 View Controller 中有一个 Collection View 和一个 TableView 。我想根据 Collection View 中的选定项目更新 TableView 的数据。因此,每次我单击 collectionView 的任何项目时,我的 tableView
数据都会更新。
我的代码:
public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
for superSkill in skills!{
if superSkill.name == (skills?[indexPath.row].name)! {
childSkills = superSkill.skills!
}
}
DispatchQueue.main.async{
self.childSkillTableView.reloadData()
}
}
有什么办法可以实现吗
最佳答案
首先要确保您的 childSkillTableView.dataSource = self
和您的 superSkillsCollectionView.delegate = self
第二件事,没有理由使用DispatchQueue.main.async({})
第三件事虽然不太重要,但您可以使用类似以下的内容来代替 for 循环:
childSkills = Skills?.first(where { superSkill in superSkill.name == (skills?[indexPath.row].name)! }
尽管您应该使用一些 if let
或 guard let
语句来检查可选值,而不是强制展开。
关于ios - 单击 CollectionViewCell 时如何更新 tableView 数据( tableview.reloadData() 在 CollectionView 的 didSelectItemAt 中不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45617231/