如何使用 XIB 自定义 tableView 节标题?

Posted

技术标签:

【中文标题】如何使用 XIB 自定义 tableView 节标题?【英文标题】:How to customize tableView Section Header with a XIB? 【发布时间】:2011-06-14 01:56:42 【问题描述】:

我正在尝试为 UITableView 创建自定义的节标题。我找到了一些参考资料,说明了如何在代码中完全做到这一点 (#1349571)。

我正在尝试确定是否可以在 Interface Builder 中创建 UIView 并使用它来自定义标题,类似于如何为 UITableViewCell 执行此操作?

【问题讨论】:

【参考方案1】:

YES 可以使用通过 XIB 创建的标题视图。创建一个 XIB 和类来管理 XIB(UIView 类)。使用

YourNibClassName* v = [[[NSBundle mainBundle] loadNibNamed:@"YOUR_XIB_NAME" owner:self options:nil] firstObject];

//With this method you can load any xib for header view

tableView.tableHeaderView = v;
[v release];

编辑

像这样在viewForHeaderInSection中返回这个视图

YourNibClassName* v = [[[NSBundle mainBundle] loadNibNamed:@"YOUR_XIB_NAME" owner:self options:nil] firstObject];
//Do some stuff here like setting text on labels etc.
return [v autorelease];

【讨论】:

【参考方案2】:

由于我们有原型单元格,您还可以将原型单元格添加到您的表格中。 在 Interface Builder 中填写原型单元格的 Identifier。 (例如 HeaderCell) 然后,您可以在 viewForHeaderForSection 中使用它,就像在 cellForRowAtIndexPath 中使用单元格一样。

例子:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    UIView *headerView = [tableView dequeueReusableCellWithIdentifier:HeaderCellID];
    UILabel *label = (UILabel *)[headerView viewWithTag:100];
    label.text = [self tableView:self.tableView titleForHeaderInSection:section];

    return headerView;

【讨论】:

不知道为什么我以前从未想过这个。对于任何复杂的标题都可以很好地工作并且更容易,尤其是在使用自动布局时,去掉了很多常量代码。谢谢!【参考方案3】:

将它添加为表格上方的标签并删除搁浅的表格标题,一旦我知道这听起来很奇怪但有效,我就这样做了

【讨论】:

以上是关于如何使用 XIB 自定义 tableView 节标题?的主要内容,如果未能解决你的问题,请参考以下文章

IOS xib在tableview上的简单应用(通过xib自定义cell)

单击tableView后隐藏xib的自定义UITableViewCell

错误:在 swift 中使用 xib 文件注册自定义 tableView 单元格

自定义 tableview 单元 xib 出口返回 nil

将多个自定义 TableViewCell Xib 索引到 TableView

如何链接两个xib?