专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
父类设置tableView数据源和代理
tableView
设置为懒加载的,方便子类使用// MARK: - 懒加载 /// 访客视图 private lazy var visitorView: HMVisitorView = HMVisitorView() // /// tableView lazy var tableView: UITableView = UITableView(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
在
HMBaseViewController
的loadView
设置tableView
的数据源和代理class HMBaseViewController: UIViewController { /// 用户是否登入标志 var userLogin = true // override func loadView() { if userLogin { // 使用talbeView self.view = tableView tableView.delegate = self tableView.dataSource = self } else { setupVisitorView() } } ... }
HMBaseViewController
添加extension
实现数据源和代理// MARK: - tableView数据源 extension HMBaseViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 0 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { return UITableViewCell(frame: CGRect(x: 0, y: 0, width: 0, height: 0)) } }
// MARK: - tableView代理 extension HMBaseViewController: UITableViewDelegate { }
子类测试tableView的数据源和代理
class HMDiscoveryViewController: HMBaseViewController {
let items = ["a", "b", "c", "d", "e", "f", "g", "h"]
override func viewDidLoad() {
super.viewDidLoad()
// 注册cell
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
}
// MARK: - tableView数据源
extension HMDiscoveryViewController {
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = self.items[indexPath.row]
return cell
}
}