很容易看出,浅蓝色的是UITableViewHeaderFooterView
,白色的是UITableViewCell
.我使用 NSFetchedResultsController
从 CoreData 加载部分和组。每个蓝色标题都是一个新部分。
有时(不总是)有一个标题 View 而不是一个表格 View 单元格。为什么?
在 viewDidLoad
中我注册了 header View:
tableView.registerNib(UINib(nibName: "PBOUserWorkDayHeaderView", bundle: nil), forHeaderFooterViewReuseIdentifier: PBOUserWorkDayHeaderViewIdentifier)
更有趣的是,当我调试 View Hierarchy 时,您可以看到,有我的自定义单元格,仅被标题覆盖。为什么?
是 iOS 错误吗?你怎么看? 渲染或我的思维方式有什么问题吗?
最佳答案
因为标题有问题,我创建了一个自定义方法,每次 tableView
请求 `viewForHeaderInSection: 时删除不必要的标题。
假设您知道如何区分标题和其他 View (在我的例子中,它们有一个自定义类)并且您知道标题 View 是直接 subview tableView
您可以通过以下方式删除它们:
private func removeDoubledHeaders() {
let subviews = tableView.subviews.reverse()
var dates = [String]()
for view in subviews {
if let header = view as? PBOUserWorkDayHeaderView {
if let date = header.dateLabel.text {
if contains(dates, date) {
view.removeFromSuperview()
} else {
dates.append(date)
}
}
}
}
}
关于ios - 使用 NSFetchedResultsController 的 UITableView 部分出现意外的标题 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30253785/