自定义UITableView中的分隔符颜色不变

时间:2019-02-08 13:46:53

标签: ios swift uitableview

我有导航控制器,每个VC都有customTableView。在我的customTableView中,将UI设置放入init()方法中,如下所示:

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    separatorColor = UIColor.orange

}

但是它不起作用。但是tableView的任何其他参数(例如backgroundColor,sectionIndexColor和其他参数)都可以正常工作。所以我只遇到分隔色问题。只能说,我所有的视图和单元格都具有clearColor。 如果我将此代码放在viewDidLoad方法内的视图控制器(具有我的customTableView的出口)中,那么它将起作用。我要实现的目标是,只有一个带有预定义参数的子类UITableView类可以在我的导航堆栈中的每个VC中使用。

2 个答案:

答案 0 :(得分:0)

至少可以调用两个初始化器:

1。 required init?(coder aDecoder: NSCoder)

当从Interface Builder(.xib或.storyboard)初始化视图时,将调用此初始化程序。要从IB初始化视图,请将某些视图或子视图的类设置为您正在使用的视图类。

2。init()

当您从代码初始化视图时,将调用

。此初始化程序可能有所不同,例如UITableViewCell的init(style: UITableViewCell.CellStyle, reuseIdentifier: String?)等。

因此,请确保您是否使用了正确的初始化程序。至少您可以设置断点以查看是否调用了此init。

希望有帮助!

答案 1 :(得分:0)

因此,我找到了一种使其工作的方法。我只是像这样在我的customTableView类中覆盖separatorColor属性:

override var separatorColor: UIColor? {
        get {
            return UIColor.orange
        }
        set {
            super.separatorColor = newValue
        }
    } 

但是我仍然不明白为什么不能像init()方法中的其他属性那样设置此属性。