UITableView - 自定义UITableViewCell中的custom selectedBackgroundView在选中时隐藏单元格分隔符

时间:2017-07-07 19:54:39

标签: ios swift uitableview swift3

我有UITableView呈现自定义类DrawerTableCell的单元格,这是以这种方式声明的:

class DrawerTableCell: UITableViewCell {

    @IBInspectable var selectionColor: UIColor = .gray {
        didSet {
            configureSelectedBackgroundView()
        }
    }

    func configureSelectedBackgroundView() {
        let view = UIView()
        view.backgroundColor = selectionColor
        selectedBackgroundView = view
    }
}

创建了这个UITableViewCell子类,以便能够为单元格指定所选的背景颜色。

在我的View Controller中设置:

tableView.separatorColor = .white

我以这种方式配置单元格:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "drawerCell") as! DrawerTableCell
    cell.selectionColor = UIColor.blue
    return cell
}

结果是,当没有选择单元格时,所有分隔符都会正确显示。当我选择一个单元格时,会显示背景颜色,但分隔符仅隐藏在选定的单元格中。

有关如何将分隔线保留在所选单元格中的任何想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

根据Apple的文档,UITableViewCell仅在选择单元格时才将此属性的值添加为子视图。它将选定的背景视图添加为背景视图(backgroundView)正上方的子视图(如果它不是nil),或者在所有其他视图后面。

所以根据这个,我认为你的分隔符是隐藏的,因为它位于你的新视图下面。尝试将selectionColor设置为.clear,看看会发生什么。如果这不起作用,您还可以尝试完全删除表视图上的分隔符,只需在每个单元格的底部添加0.5px行。