如何使用 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 单元格