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()
。一旦我添加了这个,一切又都正常了!
在我的 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()
。一旦我添加了这个,一切又都正常了!