【问题标题】:Application crash in IPhone 6 while reloadDatareloadData 时 iPhone 6 中的应用程序崩溃
【发布时间】:2021-05-02 07:36:26
【问题描述】:

我正在使用 UITableViewCell 侧的集合视图,重新加载时

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        guard let _cell = cell as? BrandRow else { return }

        let _flow = columnLayout
        _flow.scrollDirection = .horizontal

        _cell.collectionView.collectionViewLayout = _flow
        _cell.collectionView.delegate = self
        _cell.collectionView.tag = indexPath.section
        _cell.collectionView.dataSource = self
        _cell.collectionView.showsVerticalScrollIndicator = false
        _cell.collectionView.showsHorizontalScrollIndicator = false
        _cell.collectionView.reloadData()

    }

在 iPhone 6 中,当细胞被重复使用时,它会导致我的应用程序崩溃

_cell.collectionView.reloadData()

谁能告诉我我的代码有什么问题?

错误

-[UICollectionViewData validateLayoutInRect:] 中的断言失败, /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKitCore/UIKit-3698.140/UICollectionViewData.m:447

2021-01-28 17:10:08.921104+0500 Okayhai[630:48362] *** 终止应用 由于未捕获的异常“NSInternalInconsistencyException”,原因: 'UICollectionView 接收到具有索引的单元格的布局属性 不存在的路径: {length = 2、路径=0-4}'

【问题讨论】:

  • 设置布局、委托和滚动指示器的代码应该在另一个只运行一次的函数中。什么是崩溃详细信息/异常消息?
  • 检查我在查询中提到的错误。
  • willDisplayCell 不是运行此代码的好地方。您应该在 init 方法中进行的一次性设置。其他代码应该在您的cellForRowAt 中。最好避免在tag 中存储索引路径数据。如果您的表格允许单元格重新排序或插入/删除,则可能会导致问题。

标签: ios swift uitableview uicollectionview


【解决方案1】:

试试这个:
下面_cell.collectionView.reloadData()
放

_cell.collectionView.collectionViewLayout.invalidateLayout()

【讨论】:

  • 我已经用过,但在我的情况下它不起作用。
猜你喜欢
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多