TableView控制器中的第二个自定义单元格生成错误

时间:2015-10-28 05:59:43

标签: ios swift custom-cell

我有一个UITableViewController,我在其中使用多个自定义单元格。我过去使用了多个自定义单元格没有任何问题,我使用相同的策略来实现它们,因为这个错误令我感到困惑。首先,一些代码:

这是我在viewDidLoad中注册自定义单元格的方法:

    // Registering the custom cell
    let nib1 = UINib(nibName: "OmniCell", bundle: nil)
    tableView.registerNib(nib1, forCellReuseIdentifier: "omniCell")

    let nib2 = UINib(nibName: "RankCell", bundle: nil)
    tableView.registerNib(nib2, forCellReuseIdentifier: "rankCell")

这是我在cellForRowAtIndexPath中创建它们的方式:

    let cell1: OmniCell = self.tableView.dequeueReusableCellWithIdentifier("omniCell") as! OmniCell
    let cell2: RankCell = self.tableView.dequeueReusableCellWithIdentifier("rankCell") as! RankCell

当我注释掉与第二个自定义单元格相关的代码时,程序运行正常,但是当使用两个自定义单元格时,我收到此错误:

this class is not key value coding-compliant for the key rankCell.

两个自定义单元格都以相同的方式实现,因此我不确定为什么第二个自定义单元格会生成此错误,而第一个自定义单元格则不会。我错过了什么?

更新:根据要求,我将共享整个cellforrowatindexpath func:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    // This line works:
    let cell1: OmniCell = self.tableView.dequeueReusableCellWithIdentifier("omniCell") as! OmniCell

    // It is this line that breaks if not commented out:
    let cell2: RankCell = self.tableView.dequeueReusableCellWithIdentifier("rankCell") as! RankCell

    // This line works:
    let cell3: ProgressCell = self.tableView.dequeueReusableCellWithIdentifier("progressCell") as! ProgressCell


    if indexPath.row == 0 {
        return cell1
    } else if indexPath.row == 1 {
        return cell2
    } else {
        return cell3
    }

}

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。问题是XIB中存在错误的连接。参考这张图片:

enter image description here

在一个好的上面还有一个额外的“破损”出口,如:    rankCell --->排名单元格 但它没有填充圆圈,而是看起来像一个细长的符号,它太小而无法辨认出来。我删除了插座和应用程序构建并正常运行。我不确定那个连接来自哪里,其他任何自定义单元都没有这样的。