swift - 如何在子类中覆盖 tableView 样式

标签 swift uitableview inheritance polymorphism

我有一个在很多地方使用的父类(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/

相关文章:

ios - 为什么授权 header 在 iOS PATCH 请求中被删除?

ios - 根据某些条件 swift 执行同时操作

ios - 如何使用 userdefaults Swift 4 存储和检索表数据

JavaScript 原型(prototype)继承不起作用

c++ - 使用私有(private)成员的子类构造函数

c# - 接受 List<T> 的通用方法

Swift 3 - 如何将 NSMutableArray 对象附加到另一个 NSMutableArray

swift - 如何使用 Alamofire 快速加载图像

swift - 为什么 UITableViewCell 宽度小于 UITableView 宽度

iphone - 将 UIViewcontroller 添加到 UIScrollview