我在UITableView中的标题视图未添加到UIView层次结构中

时间:2015-05-06 07:25:50

标签: ios uitableview uiview-hierarchy debugview

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

enter image description here

当我调试View层次结构时,我有以下信息。 UI视图层次结构中的选定单元格适用于调试视图层次结构中的选定单元格。 enter image description here

enter image description here

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

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
}

1 个答案:

答案 0 :(得分:0)

您不应使用view方法获取tableView标头dequeueReusableCellWithIdentifier。来自documentation

  

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

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

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