ios - 使用 NSFetchedResultsController 的 UITableView 部分出现意外的标题 View

标签 ios swift xcode uitableview tableheader

enter image description here

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

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

viewDidLoad 中我注册了 header View:

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

更有趣的是,当我调试 View Hierarchy 时,您可以看到,有我的自定义单元格,仅被标题覆盖。为什么?

enter image description here

是 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/

相关文章:

ios - 用箭头替换 GMSMapView 中的蓝点 - Swift

iphone - 获取有关尝试打开 Epub 的应用程序建议

swift - 只获取没有目录的文件的url

objective-c - 将filteredArrayUsingPredicate应用于多维NSMutableArray的特定列

python - kivy-ios .toolchain.py:第4行:语法错误:Mac High Sierra中的文件意外结束

swift - Xcode 11 语法高亮显示在一个项目中被破坏

swift - 如何使用 WKWEBVIEW 打开外部 url

Xcode - 检查扩展类型

ios - ViewController 中的多个 UICollectionViews |不会调用一个 CollectionViews 委托(delegate)方法

ios - 为什么无法调整 View Controller 高度