首页 > 解决方案 > UITableViewCell 在 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()再次使用 : 加载内容,这显示了单元格的背景,但不显示插图。当然,动画丢失了..

iOS 12.5 上的屏幕截图(正确显示)

iOS 14.4 上的屏幕截图(缺少背景和插图)

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

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

标签: iosswiftxibios14

解决方案


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


推荐阅读