由于使用分组样式的表视图的设计在 iOS7中发生了相当大的变化,我想隐藏(或删除)第一部分的标题。到目前为止,我还没有成功。
简单来说,我的代码是这样的:
- (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调用。但仍然使用默认高度绘制空节标题。(在 iOS6中,这两个方法被调用。然而,可见的结果是一样的。)
如果返回不同的值,则部分标题将获得指定的高度。
如果我返回0.01,它几乎是正确的。然而,当我在模拟器中打开“颜色错位图像”时,它会标记所有的表格视图单元格(这似乎是一个蕴涵)。
问题 UITableView: 隐藏空节中的标题的答案似乎表明有些人成功地隐藏了部分标题。但是它可能适用于普通样式(而不是分组样式)。
到目前为止,最好的折衷方案是返回高度0.5,导致导航栏下面的线条有点粗。但是,如果有人知道如何完全隐藏第一部分的标题,我将非常感激。
更新
根据 Caglar的分析(https://stackoverflow.com/a/19056823/413337) ,只有当表视图包含在导航控制器中时才会出现问题。