我把我的工作tableviewcontroller放在一个pageviewcontroller中。现在我必须以编程方式在tableview中注册单元格,并且不为单元格调用方法awakeFromNib。我的自定义单元格中的所有属性都未初始化,如果我尝试设置内容,应用程序崩溃。
在pageviewcontroller中添加tableviewcontroller会有什么不同吗?
self.tableView.registerClass(ParticipantCell.self, forCellReuseIdentifier: ParticipantCell.cellIdentifier)
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let index = self.sections[indexPath.section].index+indexPath.row
let participant = self.participants[index]
let cell = tableView.dequeueReusableCellWithIdentifier(ParticipantCell.cellIdentifier, forIndexPath: indexPath) as! ParticipantCell
// cell.setParticipantData(participant)
return cell
}
答案 0 :(得分:0)
如果以编程方式创建单元格,则不会调用awakeFromNib
。但是,您可以通过覆盖来执行配置:
init(style: UITableViewCellStyle, reuseIdentifier: String?)
作为建议,您可以使用这样的方法:
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupCell()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupCell()
}
func setupCell() {
// setup your cell here
}
答案 1 :(得分:0)
问题是Tableviewcontroller被实例化错误。我通过从故事板中实例化它来解决它:
let storyboard = UIStoryboard(name: "Participants", bundle: NSBundle.mainBundle())
if let controller = storyboard.instantiateViewControllerWithIdentifier("ParticipantListController") as? ParticipantListController{
...
}