2

在此处输入图像描述

很容易看出,浅蓝色的是UITableViewHeaderFooterView,而白色的是UITableViewCell。我用来NSFetchedResultsController从 CoreData 加载部分和组。每个蓝色标题都是一个新部分。

有时(并非总是)有一个标题视图而不是一个表格视图单元格。为什么?

viewDidLoad我注册标题查看:

tableView.registerNib(UINib(nibName: "PBOUserWorkDayHeaderView", bundle: nil), forHeaderFooterViewReuseIdentifier: PBOUserWorkDayHeaderViewIdentifier)

更有趣的是,当我调试视图层次结构时,你可以看到,有我的自定义单元格,只是被标题覆盖。为什么?

在此处输入图像描述

是iOS错误吗?你怎么看?渲染或我的思维方式有问题吗?

4

1 回答 1

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)
                }
            }
        }
    }
}
于 2015-05-16T19:18:02.807 回答