0

使用UITableViewandNSFetchedResultsController我刷新并显示我的表格的内容。在某些时候,我有一个没有标题视图的屏幕。它应该代替单元格之间的空间。

在此处输入图像描述

当我调试视图层次结构时,我有以下信息。UI View 层次结构中的选定单元格适用于Debug View Hierarchy中的选定单元格。 在此处输入图像描述

在此处输入图像描述

要创建标题视图,我使用以下方法:

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let workday = workDayObjectForSection(section)
    let cell = tableView.dequeueReusableCellWithIdentifier(PBOUserWorkDayCellIdentifier) as! PBOUserWorkDayTableViewCell
    cell.configureCellWithWorkDay(workday)

    return cell
}
4

1 回答 1

0

您不应该使用方法view获取tableView标题。dequeueReusableCellWithIdentifier文档中:

如果一个单元对象是可重用的,则在情节提要中为其分配一个重用标识符(任意字符串)。在运行时,表视图将单元对象存储在内部队列中。当表格视图要求数据源配置一个单元格对象进行显示时,数据源可以通过向表格视图发送 dequeueReusableCellWithIdentifier: 消息来访问排队对象,并传入一个重用标识符

这意味着当您将标题作为重用单元返回时,tableView可能会将其作为单元显示在另一个地方。请注意,标题的行为与单元格不同,它保持在顶部,而部分可见。

但是,您可以对 header 使用相同的视图,但每次都从 等创建它,并且不分配任何重用标识符xibstoryboard如果您正在寻找一些优化,您可以将它们存储在某个数组中并返回缓存值。但我想建议不要使用UITableViewCell表头视图的子类

于 2015-05-06T07:48:42.763 回答