带有 IB 的表格视图的自定义标题

Posted

技术标签:

【中文标题】带有 IB 的表格视图的自定义标题【英文标题】:Custom header of table view with IB 【发布时间】:2015-02-15 14:54:43 【问题描述】:

我想使用界面生成器为表格视图部分创建自定义标题。我不能使用 titleForHeaderInSection 方法,因为我需要显示两个标签。我使用了以下说明:Customizing Header and Footer of TableView in ios8,但它不起作用。

到目前为止我做了什么:

    创建一个继承自 UITableViewCell 的自定义类 CustomTableCell
class CustomTableCell: UITableViewCell 
    @IBOutlet weak var dateLabel: UILabel!
    @IBOutlet weak var dateDescriptionLabel: UILabel!

    在情节提要中创建动态原型单元 添加标识符 将标签连接到自定义 UITableViewCell 实施viewForHeaderInSection
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
    let headerCell = tableView.dequeueReusableCellWithIdentifier("CustomTableCell") as CustomTableCell
    headerCell.backgroundColor = UIColor.cyanColor()
    headerCell.dateLabel.text = "Test date"
    headerCell.dateDescriptionLabel.text = "Test date description"

    return headerCell

当我运行应用程序时,该部分出现一秒钟,然后在表格单元格下方移动,我收到错误:没有重复使用表格单元格的索引路径

这个解决方案有什么问题?我从链接的教程中下载了该项目,它在那里工作。

【问题讨论】:

tableView的delegate & datasource你设置了吗? 是的,当然。否则标题部分不会在一秒钟内显示 可以添加错误的日志吗? 015-02-15 17:39:01.791 MyApp[16701:530127] 没有重复使用表格单元格的索引路径 2015-02-15 17:39:01.791 MyApp[16701:530127] 没有索引重用表格单元格的路径 看来你在另一个方法调用中做错了,你能把你的项目添加到 gitHub 并分享一个链接吗?生病去吧 【参考方案1】:

您的问题源于 UIKit 如何处理 UITableViews。 为了确保表格视图快速响应,即使有大量单元格,也会重复使用这些单元格。

通过调用tableView.dequeueReusableCellWithIdentifier("CustomTableCell"),您是在请求 tableView 给您一个单元格以供重用。

很多人一直在使用可重复使用的单元格来设计故事板中的页眉/页脚。从 iOS 7 Beta 5 开始,这可能会导致错误。这个答案很好地解释了这种情况:What is the meaning of the “no index path for table cell being reused” message in iOS 6/7?

要设计您自己的自定义页眉/页脚视图,我不建议使用 UITableViewCells。相反,您应该直接在代码中创建和设计自定义 UIView。如果您想使用 Interface Builder,您可以创建一个 .xib 或在 Storyboard 中创建一个不是实际控制器视图的子视图的视图。

【讨论】:

我将创建 .xib 文件。感谢您的帮助。

以上是关于带有 IB 的表格视图的自定义标题的主要内容,如果未能解决你的问题,请参考以下文章

无法将内容添加到 IB 视图控制器中的自定义表格视图单元格

在具有动态高度的 IB uitableviewcell 中使用带有 XIB 的自定义视图

使用带有 TextField 的自定义表格视图单元格关闭数字键盘

带有核心图形的自定义表格视图单元

如何为 MkAnnotation View 自定义视图,就像表格视图的自定义单元格一样?

自定义 tableviewcell 和自动布局