我的Swift代码中有一个设计UICollectionViewCells
class PostCell: UICollectionViewCell, UITableViewDelegate, UITableViewDataSource {
let tableView: UITableView!
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .white
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cellReuseIdentifier")
tableView.delegate = self
tableView.dataSource = self
designCell()
}
}
我需要在单元格中有UITableView
,因此我添加了UITableViewDelegate, UITableViewDataSource
个类,但这会让我返回错误
Property 'self.tableView' not initialized at super.init call
可能是什么问题以及如何初始化tableView?
答案 0 :(得分:2)
根据初始化规则,必须在调用超类的init
方法之前初始化所有存储的属性。将属性声明为隐式展开的可选项不会初始化该属性。
将tableView
声明为非可选项,并在super
调用之前将其初始化
class PostCell: UICollectionViewCell, UITableViewDelegate, UITableViewDataSource {
let tableView: UITableView
override init(frame: CGRect) {
tableView = UITableView(frame: frame)
super.init(frame: frame)
backgroundColor = .white
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cellReuseIdentifier")
tableView.delegate = self
tableView.dataSource = self
designCell()
}
}
答案 1 :(得分:1)
您需要创建并连接UITableView
的插座或以编程方式创建
let tableView = UITableView(frame: yourFrame)