是的,我们有一个非常相似的问题,我自己的解决方案如下:
Apple UITableViewHeaderFooterView 文档(指向它的链接非常长,但您可以使用您最喜欢的搜索引擎轻松找到它)说您可以访问标题视图的 textLabel,而无需通过 viewForHeaderInSection 方法格式化您自己的视图。
textLabel 视图的主要文本标签。(只读)
@property(nonatomic, readonly, retain) UILabel *textLabel 讨论访问此属性中的值会导致视图创建默认标签以显示详细文本字符串。如果您通过将子视图添加到 contentView 属性来自己管理视图的内容,则不应访问此属性。
标签的大小会根据字符串的大小以最佳方式适合内容视图区域。它的大小也会根据是否存在详细文本标签进行调整。
通过一些额外的搜索,修改标签文本的最佳位置是 willDisplayHeaderView 方法(在How to implement `viewForHeaderInSection` on iOS7 style?中建议)。
所以,我想出的解决方案非常简单,只需在 titleForHeaderInSection 实际设置文本标签字符串后进行转换:
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
//I have a static list of section titles in SECTION_ARRAY for reference.
//Obviously your own section title code handles things differently to me.
return [SECTION_ARRAY objectAtIndex:section];
}
然后只需调用 willDisplayHeaderView 方法来修改它的外观:
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
if([view isKindOfClass:[UITableViewHeaderFooterView class]]){
UITableViewHeaderFooterView *tableViewHeaderFooterView = (UITableViewHeaderFooterView *) view;
tableViewHeaderFooterView.textLabel.text = [tableViewHeaderFooterView.textLabel.text capitalizedString];
}
}
您可以在其中放入自己的“if”或“switch”子句,因为节号也传递给该方法,因此希望它允许您有选择地以大写单词显示您的用户/客户端名称。