由于使用分组样式的表格视图设计在 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: hide header from empty section问题的答案似乎表明有些人成功隐藏了部分标题。但它可能适用于普通样式(而不是分组样式)。
到目前为止,最好的折衷方案是返回高度 0.5,从而在导航栏下方产生一条较粗的线。但是,如果有人知道如何完全隐藏第一节标题,我将不胜感激。
更新
根据caglar的分析(https://stackoverflow.com/a/19056823/413337),只有当表格视图包含在导航控制器中时才会出现问题。