表视图的自定义标题与IB

时间:2015-02-15 14:54:43

标签: ios uitableview swift ios8 uistoryboard

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

到目前为止我做了什么:

  1. 创建一个继承自UITableViewCell
  2. 的自定义类CustomTableCell
    class CustomTableCell: UITableViewCell {
        @IBOutlet weak var dateLabel: UILabel!
        @IBOutlet weak var dateDescriptionLabel: UILabel!
    }
    
    1. 在故事板中创建动态原型单元
    2. 添加标识符
    3. 将标签连接到自定义UITableViewCell
    4. 实施viewForHeaderInSection
    5. 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
      }
      

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

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

1 个答案:

答案 0 :(得分:2)

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

通过调用tableView.dequeueReusableCellWithIdentifier("CustomTableCell"),您要求tableView为您提供一个可以重用的单元格。

很多人一直在使用可重用的单元格来设计Storyboard中的页眉/页脚。从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中创建一个视图,该视图不是实际控制器视图的子视图。