我有一个在很多地方使用的父类(super class),它只是一个符合 tableView 委托(delegate)的类。
class SuperTableViewController: UITableViewDataSource, UITableViewDelegate {
var tableView: UITableView = {
let tableView = UITableView(frame: .zero, style: .plain)
return tableView
}()
... //more code
}
我想创建一个继承自 SuperTableViewController 的子类,但它应该具有分组样式,我不确定如何覆盖子类中的 tableview 样式:
class SubClassController: SuperTableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView = UITableView(frame: .zero, style: .grouped) // this doesn't work
}
... //more code
}
最佳答案
您可以在 SuperTableViewController
中引入一个 tableView 样式属性,如下所示,并在子类中覆盖
。这样您就不必初始化整个 tableView
或在子类中完全注册单元格。
class SuperTableViewController: UITableViewDataSource, UITableViewDelegate {
var tableViewStyle: UITableView.Style {
return .plain
}
lazy var tableView: UITableView = {
let tableView = UITableView(frame: .zero, style: self.tableViewStyle)
return tableView
}()
}
class SubClassController: SuperTableViewController {
override var tableViewStyle: UITableView.Style {
return .grouped
}
}
关于swift - 如何在子类中覆盖 tableView 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58516222/