显示空部分的表视图分隔符

时间:2014-07-10 01:24:19

标签: ios uitableview

我将UITableView设置为UITableViewStyleGrouped样式。只要某个部分包含一个或多个项目,它就会在部分标题下方显示一个像素分隔符。但是,如果该部分没有项目,则部分之间没有分隔符。

如何让分隔符出现在所有部分中,即使是那些没有单元格的部分?

enter image description here

注意第1节和第2节在它们和第一个单元格之间是否有分隔符,但第3节在它和第4节之间没有分隔符。

3 个答案:

答案 0 :(得分:1)

使用这两种方法在Section之间添加分隔符。

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 44.0;
}
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];

    [headerView setBackgroundColor:[UIColor brownColor]];
    UIImageView *img = [[UIImageView alloc]initWithFrame:CGRectMake(0, 43, 320, 1)];
                    img.backgroundColor = [UIColor whiteColor];

    [headerView addSubview:img];
    return headerView;
}

答案 1 :(得分:1)

一种解决方案是在每个空白部分添加一个页脚:

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return [self tableView:tableView numberOfRowsInSection:section] == 0 ? 0.5 : 0.00000001;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    if ([self tableView:tableView numberOfRowsInSection:section] == 0) {
        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.5)];
        view.backgroundColor = tableView.separatorColor;
        return view;
    } else {
        return nil;
    }
}

注意:

这在大多数情况下会产生正确的结果:

enter image description here

......但有几个问题:

  1. 这会利用页脚,因此如果您需要显示页脚,此解决方案可能无法正常工作。
  2. 在编辑模式下,当您将最后一项拖出某个部分时,该部分与该部分之间的边框将会消失。
  3. 在编辑模式下,当您将项目拖动到空白部分时,该部分底部会有一个双边框。
  4. 问题2和3的例子:

    enter image description here

    在上图中,注意第2和第3部分之间没有线,因为所有项目都已移出该部分(问题2)。

    另请注意第3节和第4节中的最后一项是如何具有双边框的,因为它们被拖入新的部分(问题3)。

答案 2 :(得分:0)

您可以尝试自定义节标题视图。使用此委托函数: - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;