我正在使用Swift创建一个UITableView子类,我的值并不坚持。
我这样创建:
override init(frame: CGRect, style:UITableViewStyle) {
super.init(frame: frame, style: style)
setupTableView()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupTableView() {
self.delegate = self
self.dataSource = self
self.bounces = false
self.separatorStyle = .None
self.backgroundColor = Color.lightBackground
self.addSubview(footerImageView)
let cellNib = UINib(nibName: "MenuTableViewCell", bundle: nil)
self.registerNib(cellNib, forCellReuseIdentifier: "MenuTableViewCell")
}
当视图出现时,分隔符仍然存在,背景仍为白色(Color.lightBackground
为浅灰色)。我可以看到tableView背景,因为单元格没有填满屏幕。我的细胞确实加载了正确的背景颜色。
单元格会加载,所以我知道我的委托和数据源正在运行。
为什么我的属性没有设置?
答案 0 :(得分:1)
我经历过同样的问题,这个技巧有所帮助:
override init(frame: CGRect, style: UITableViewStyle) {
super.init(frame: frame, style: style)
setup()
}
func setup() {
DispatchQueue.main.async {
self.delegate = self
self.dataSource = self
self.backgroundColor = .clear
self.register(SearchResultCell.self, forCellReuseIdentifier: "SearchResultCell")
self.separatorStyle = .none
self.tableFooterView = UIView()
}
}
老实说,我不知道为什么会这么做。但main.async
解决了这个问题。
好的,我明白了。该问题是由在包含视图控制器的初始化程序中初始化UITableView的子类实例引起的。
制作表格视图lazy var
也可以解决问题。