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

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

到目前为止我做了什么:

  1. 创建一个继承自 UITableViewCell 的自定义类 CustomTableCell
class CustomTableCell: UITableViewCell {
    @IBOutlet weak var dateLabel: UILabel!
    @IBOutlet weak var dateDescriptionLabel: UILabel!
}
  1. 在情节提要中创建动态原型单元
  2. 添加标识符
  3. 将标签连接到自定义 UITableViewCell
  4. 实施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 并分享一个链接吗?生病去吧

标签: ios uitableview swift ios8 uistoryboard


【解决方案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 文件。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
相关资源
最近更新 更多