我有导航控制器,每个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中使用。
答案 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()
方法中的其他属性那样设置此属性。