我有一个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
}
}