我将UITableView
置于UITableViewCell
内。
我已将UITableViewCell
的课程扩展为,UITableViewDataSource, UITableViewDelegate
。
制作@IBOutlet var tableView: UITableView!
添加了以下内容:
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style , reuseIdentifier: reuseIdentifier)
setUpTable()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
setUpTable()
}
override func awakeFromNib() {
super.awakeFromNib()
setUpTable()
}
将setUpTable()
实施为:
func setUpTable(){
tableView?.delegate = self
tableView?.dataSource = self
//tableView.register(UINib(nibName: "AvailableTimingsTableViewCell", bundle: nil), forCellReuseIdentifier: "TimingCell")
}
如果我将注释行保留在setUpTable()
中,我会:
'无法使用标识符TimingCell将单元格出列 - 必须注册a nib或标识符的类或连接原型单元格 故事板'
如果我取消注释我得到的评论:
致命错误:在解包可选值时意外发现nil
在同一条线上。
setUpTable()
之后我将其实施为:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TimingCell", for: indexPath) as?AvailableTimingsTableViewCell
cell?.dayNameLabel.text = "Wednesday"
cell?.timeLabel.text = "01:00 PM - 03:00 PM"
return (cell)!
}
答案 0 :(得分:1)
我认为init()中的setUpTable()过早被调用。此时视图未加载。在viewDidLoad()中进行设置,也不要注释掉注册单元格。除了那段代码看起来不错。
答案 1 :(得分:0)
请检查以下几点
1)您需要在XIB中注册小区标识符,
2)将班级名称分配给XIB
3)你需要检查的行的单元格?出列的YourClass和
4)使用您分配给XIB的相同标识符出列并注册(以下是我的问题)