PageViewController内的UITableViewCell表现不同

时间:2016-03-05 16:50:57

标签: ios uitableview uipageviewcontroller

我把我的工作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
}

2 个答案:

答案 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{
...
}