如何删除UITableView节标题分隔符

时间:2017-02-17 11:03:02

标签: ios swift uitableview storyboard

我想删除(或使它们成为clearColor)UITableView的节头分隔符。设置tableView.separatorStyle = .none不起作用。我也尝试过来自here的解决方案,但它们都没有真正为我工作(也许是因为答案很老)。我仍然在节标题下方得到这个小分隔符。

我在Storyboard中创建了UITableView并在那里添加了一个UITableViewCell。然后我把它设置为这样的标题:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let cell = tableView.dequeueReusableCell(withIdentifier: "headerTableViewCell")
        return cell
    }

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if section == 1 {
            return 49
        }
        return 0
    }

4 个答案:

答案 0 :(得分:9)

不知道为什么要在UITableViewCell方法中返回viewForHeaderInSection,因此可能会显示UITableViewCell的分隔符。尝试从contentView方法返回viewForHeaderInSection单元格而不是单元格。

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let cell = tableView.dequeueReusableCell(withIdentifier: "headerTableViewCell")
    return cell.contentView
}

答案 1 :(得分:2)

试试这个:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = UIView()
    headerView.backgroundColor = UIColor.clear
    return headerView
}

答案 2 :(得分:1)

我通过以下方式解决了这个问题:

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 0.01
    }

答案 3 :(得分:1)

显示覆盖layoutSubviews 删除与单元格相关和与单元格相关的所有单元格分隔符

@interface MyCustomCell : UITableViewCell

@end    

@implementation MyCustomCell

- (void)layoutSubviews {
    // don't call [super layoutSubviews]
    // can be left empty
    // does not harm other UI elements inside the contentView
}

@end

在多单元格部分中,您可能只想删除与部分相关的分隔符(在第一个单元格的顶部和最后一个单元格的底部),并保持插入,单元格间的分隔符显示:

- (void)layoutSubviews {
    [super layoutSubviews];

    for (UIView *view in self.subviews) {
        if ([view isEqual:self.contentView]) continue;

        view.hidden = view.bounds.size.width == self.bounds.size.width;
    }
}