带有 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 uitableviewcell 中使用带有 XIB 的自定义视图
使用带有 TextField 的自定义表格视图单元格关闭数字键盘