随着使用分组样式的表格视图的设计在iOS 7中发生了很大变化,我想隐藏(或删除)第一个节标题。到目前为止,我还没有实现它。
经过某种程度的简化,我的代码如下所示:
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
return 0.0f;
return 32.0f;
}
- (UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (section == 0) {
UIView* view = [[UIView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 640.0f, 0.0f)];
return view;
}
return nil;
}
- (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return nil;
} else {
// return some string here ...
}
}
如果我返回高度0,则其他两个方法将永远不会以段索引0调用。然而,仍会使用默认高度绘制空的段头。(在iOS 6中,调用了这两种方法。但是,可见的结果是相同的。)
如果返回不同的值,则节标题将达到指定的高度。
如果我返回0.01,那几乎是正确的。但是,当我在模拟器中打开“颜色未对齐的图像”时,它标记了所有表格视图单元格(这似乎是合乎逻辑的结果)。
UITableView问题的答案:从空节隐藏标题似乎表明某些人成功隐藏了标题。但这可能适用于普通样式(而不是分组样式)。
到目前为止,最好的折衷方案是返回高度0.5,从而导致导航栏下方的线稍粗。但是,如果有人知道第一部分的标题如何完全隐藏,我将不胜感激。
更新资料
根据caglar的分析(https://stackoverflow.com/a/19056823/413337),仅当表视图包含在导航控制器中时,才会出现此问题。
section == 0
。