tableView 单元格内的多个 collectionView 单元格在滚动时更改设计
Posted
技术标签:
【中文标题】tableView 单元格内的多个 collectionView 单元格在滚动时更改设计【英文标题】:multiple collectionView cells inside tableView cells changing design on scroll 【发布时间】:2019-06-04 00:01:49 【问题描述】:我有一个包含 3 个单元格的 tableview,它们是 collectionView 2 具有相同的设计 tableview 中的单元格就像
1- 类别单元格(collectionView 垂直)
2&3- 产品单元格(collectionView 水平)
在滚动类别单元格时将设计更改为产品,对于需要类别单元格设计的产品也是如此
这会导致 Break on UIViewReportBrokenSuperviewChain 进行调试。在标签为 4 的 collectionView 上
我尝试了collectionView.collectionViewLayout.invalidateLayout()
,但情况变得更糟
tableView(cellForrowAt)(
if indexPath.row == 3
let cell = self.homeTableView.dequeueReusableCell(withIdentifier: "TableCollectionViewCell") as! TableCollectionViewCell
cell.collectionView.delegate = self
cell.collectionView.dataSource = self
cell.collectionView.tag = 4
cell.collectionView.isScrollEnabled = false
return cell
collectionView(cellForItemAt)
if collectionView.tag == 4
let nib = UINib(nibName: "ProductCell", bundle: nil)
collectionView.register(nib, forCellWithReuseIdentifier: "ProductCell")
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ProductCell", for: indexPath) as! ProductCell
cell.setup(product: self.newProducts[indexPath.row])
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
layout.minimumInteritemSpacing = 10
layout.minimumLineSpacing = 10
collectionView.collectionViewLayout = layout
return cell
【问题讨论】:
【参考方案1】:您不应该在每次检索单元格时向 collectionView 注册您的 Nib。您应该在实例化/配置时注册您计划在 collectionView 中使用的所有单元格类型,或者至少检查该单元格是否已经注册。
同样,您不应在用于检索单元格的代码中更改集合视图的布局。在大多数情况下,布局将设置一次。在一些复杂的情况下,您可能希望在调度 reloadData() 响应正在下载的新数据或某些用户交互(从横向更改为纵向等)之前更改它。
在集合视图刷新期间更改布局可能会产生您遇到的意外错误。
【讨论】:
1- 我将寄存器 Nib 移动到 tableview cellForRowAt,因为我无法在 viewDidLoad 中访问它 2- 删除的布局更改相同,但在滚动时,我得到第 0 行的第 4 行的单元格和第 4 行的第 0 行的单元格只是设计,但内容就像我将产品加载到类别 collectionView 中一样,并且对于类别与我将它们加载到产品 collectionView 中的类别相同我认为这是来自 Tableview 单元格的行编号,但我不明白如何解决它有什么想法吗? 我。为类别创建了一个带有collectionView的新表格单元格,所以现在有2个带有collectionview的单元格,似乎这解决了问题谢谢:))以上是关于tableView 单元格内的多个 collectionView 单元格在滚动时更改设计的主要内容,如果未能解决你的问题,请参考以下文章
完成在单元格内编辑 textview 后向 tableview 添加另一个单元格
在单元格内编辑textview时,将另一个单元格添加到tableview
TableView单元格内的TableView,自动调整单元格高度