我已将IB的输出链接到代码,如下所示。
class DiaryTableViewCell: UITableViewCell {
@IBOutlet weak var TitleLabel: UILabel!
@IBOutlet weak var SubTitleLabel: UILabel!
@IBOutlet weak var leftImageView: UIImageView!
@IBOutlet weak var rightImageView: UIImageView!
}
在这里,我正在注册课程:
override func viewDidLoad() {
self.title = "My Diary"
cellNib = UINib(nibName: "TableViewCells", bundle: nil)
tableView.registerClass(DiaryTableViewCell.classForCoder(), forCellReuseIdentifier: kCellIdentifier)
}
但是我不断收到以下运行时错误:
***由于未捕获的异常终止应用程序' NSUnknownKeyException',原因:' ... setValue:forUndefinedKey:]:此类不是键值 符合编码的关键字SubTitleLabel。'
从以下代码中:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier(kCellIdentifier) as DiaryTableViewCell?
if (cell == nil) {
tableView.registerClass(DiaryTableViewCell.classForCoder(), forCellReuseIdentifier: kCellIdentifier)
cell = cellNib?.instantiateWithOwner(self, options: nil)[0] as? DiaryTableViewCell
cell?.selectionStyle = .None
}
if (cell != nil) {
println("\(x++)) Inside cell")
cell!.TitleLabel.text = "Hello"
cell!.SubTitleLabel.text = "World"
}
return cell!
}
具体来说,它发生在这里:
cell = cellNib?.instantiateWithOwner(self, options: nil)[0] as? DiaryTableViewCell
问题:我如何违反UILabel的密码值编码?
这还没有发生...... UILabel符合KVO。
答案 0 :(得分:8)
我链接到错误的来源!
结果如下:
答案 1 :(得分:1)
您不应该在instantiateWithOwner
内亲自致电tableView:cellForRowAtIndexPath
。
在viewDidLoad
中注册笔尖,然后dequeueReusableCellWithIdentifier
将为您完成所有工作。
您遇到特定错误的原因是您正在调用instantiateWithOwner
作为所有者传递self
,因此笔尖正在尝试将出口连接到您的UITableViewDataSource
实施类而不是DiaryTableViewCell
。
答案 2 :(得分:0)
有时它就像你在你的xib中创建按钮一样,你创建一个按钮并从一个按钮复制粘贴其他按钮,在这种情况下会发生这个错误,是的,从xib删除的连接也可能是一个原因。
答案 3 :(得分:0)
我创建了一个与你的&相同的TableViewCell有同样的问题。我有研究解决问题,但没有。然后我删除TableViewCell中的Label并再次重新创建,通过文件所有者将其连接到TableViewCell,v..v结果是正确的。没错。你应该重新创建它们。
答案 4 :(得分:0)