reloadSections 后 UITableViewCell 不显示背景和插图

UITableViewCell not showing background and insets after reloadSections

在我的 UITableView 中,我实现了一个可扩展的部分行为:如果单击一个部分中索引为 0 的单元格,则此部分的其余部分将显示为

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
    if indexPath.row == 0 {
        isSectionExpanded[indexPath.section] = !isSectionExpanded[indexPath.section]
        tableView.reloadSections([indexPath.section], with: .none)
    }
}

我天真地有一个布尔数组,我在其中跟踪每个部分的“扩展”状态:

var isSectionExpanded = [Bool]()

因此,一个部分中的行数是这样计算的(“页眉”一行,“页脚”一行,此外,行程中的每条路段都有一行:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if let trip = trips?[section] {
        if isSectionExpanded[section] {
            return 2 + (trip.legs?.count ?? 0)
        } else {
            return 1
        }
    }
    return 0
}

非常简单,而且一切正常,例如在 iOS 12 上仍然有效。但是在 iOS 的最新版本中 - 不幸的是我不知道这是什么时候开始的,可能是 iOS 14.1 或 2 - 展开的单元格没有任何背景并且不再绘制插图。为了寻求帮助,我看到了一些提到类似问题的帖子,但使用的是 SwiftUI。我仍然使用 xib 文件和 Swift。 我已经尝试在内容视图上设置背景,它可以正确显示背景,但仍然缺少插图...... 我什至尝试使用 reloadData() 加载内容:同样,这显示了单元格的背景,但没有显示插图。当然动画丢失了..

Screenshot on iOS 12.5 (displaying correctly)

Screenshot on iOS 14.4 (missing background and insets)

单击其中一些单元格时,会使用从左上角到右下角的奇怪动画绘制正确的背景颜色。

谁能告诉我是什么导致了这个问题以及如何解决它?非常感谢!

iOS 12 使用白色 - 背景默认颜色。 iOS 14 正在使用组表视图颜色 - 背景默认颜色。 你可以在 Xcode 10.3 和 Xcode 11.x 中看到这些 谢谢

现在发现问题了,和iOS版本没有关系: 最近在这个自定义单元格视图 class 中,我覆盖了 layoutSubviews(),但没有调用 super.layoutSubviews()。一旦我添加了这个,一切又都正常了!