如何删除分组表中标题和第一行之间的分隔符

时间:2018-10-11 14:55:08

标签: ios swift tableview

我正在创建静态tableView。我的目标是有一个单一视图,该视图显示具有3行(获取支持,发送反馈,参与条款)和页眉+页脚的tableView。

现在,除了我似乎无法摆脱的两个额外的分隔符(一个在标题和第一个单元格之间,另一个在最后一个单元格和页脚之间)之外,其他所有功能都正常工作。

这是我的代码:

final class viewController: UITableViewController {

    private let headerContainer = UIView()
    private let footerContainer = UIView()

    private let tableData = ["Get Support", "Send Feedback", "Participation Terms"]

    override func viewDidLoad() {
        super.viewDidLoad()

        setupHeaderAndFooter()
        setupTableView()
    }

    func setupHeaderAndFooter() {
        /* setup code here (not relevant to this question) */

    func setupTableView() {
        // reinitializing tableView so that we can change its style to grouped
       tableView = UITableView(frame: CGRect.zero, style: .grouped)
       tableView.delegate = self
       tableView.separatorStyle = .singleLine
    }

    //MARK: UITableView Methods

    override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        return headerContainer
    }

    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
         return 150
    }

    override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        return footerContainer
    }

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

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return tableData.count
    }

    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 70
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cell")
        cell.textLabel!.text = tableData[indexPath.row]
        return cell
    }
}

3 个答案:

答案 0 :(得分:0)

一种实现此目的的方法是不使用UITableView提供的默认分隔符。并放置一个UILabelUIView并将其背景色设置为浅灰色,并将其高度设置为1(根据您的要求),宽度(完整的表格宽度或根据您的要求)并位于底部您在单元格,页眉或页脚中满足的所有内容。

答案 1 :(得分:0)

好,你去。

简单的技巧实际上是单线的,而且很容易解释:

self.tableView.separatorColor = self.tableView.backgroundColor

之后:

enter image description here

我希望这会有所帮助!

答案 2 :(得分:0)

您必须在标题视图中将clipsToBounds设置为true

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let header = //Get your header here
    header.clipsToBounds = true
    return header
}

之前:

enter image description here

之后:

enter image description here