很容易看出,浅蓝色是 UITableViewHeaderFooterView
,白色是 UITableViewCell
。我使用NSFetchedResultsController
从CoreData加载部分和组。每个蓝色标题都是一个新的部分。
有时(并非总是)有一个标题视图,而不是表格视图单元格。为什么?
在viewDidLoad
i中注册标题查看:
tableView.registerNib(UINib(nibName: "PBOUserWorkDayHeaderView", bundle: nil), forHeaderFooterViewReuseIdentifier: PBOUserWorkDayHeaderViewIdentifier)
更有趣的是,当我调试视图层次结构时,您可以看到,我的自定义单元格已被标题覆盖。为什么呢?
这是iOS错误吗?你觉得怎么样?渲染或我的思维方式错了吗?
答案 0 :(得分:2)
由于标题是一个问题,我每次tableView
请求`viewForHeaderInSection时都创建了一个自定义方法来删除不必要的标题:。
假设您知道如何区分标题与其他视图(在我的情况下,他们有自定义类),并且您知道标题视图是直接子视图 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)
}
}
}
}
}