【发布时间】:2013-10-04 02:03:11
【问题描述】:
由于使用分组样式的表格视图设计在 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),只有在导航控制器中包含表格视图时才会出现问题。
【问题讨论】:
-
我没有得到那部分 => if(section==0) return view;返回零;即在第一部分返回视图,否则返回 nil?
-
这个想法是为第一部分返回一个高度为 0 的视图,并为所有其他部分返回 nil 以便表格视图使用它们的默认标题视图. nil 部分很好用;表格视图显示了这些部分的标题。但是第 0 部分的部分无关紧要,因为该方法从未使用
section == 0调用。 -
这个答案似乎简短而甜蜜。 stackoverflow.com/a/23955420/3965
标签: ios uitableview ios7