我得到了UITableViewCell,但是cell';s元素为零。为什么?
下面的代码是前一篇文章的清理版和重刷版我得到了UITableViewCell,但是cell';s元素为零。为什么?,uitableview,swift,Uitableview,Swift,下面的代码是前一篇文章的清理版和重刷版 参考: 我拿到了那间牢房,但没有那间牢房的元素 1) Inside cell (lldb) po cell!.TitleLabel nil 我清理了代码,它编译并运行正常。牢房已经装好了,涂上了红色,所以我可以看到它已经装好了。但是没有一个单元格的内容被实例化。 为什么? 它现在看到了牢房的成员 但现在我得到了: *** Terminating app due to uncaught exception 'NSUnknownKeyExcep
参考: 我拿到了那间牢房,但没有那间牢房的元素
1) Inside cell
(lldb) po cell!.TitleLabel
nil
我清理了代码,它编译并运行正常。牢房已经装好了,涂上了红色,所以我可以看到它已经装好了。但是没有一个单元格的内容被实例化。
为什么?
它现在看到了牢房的成员但现在我得到了:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x7f9691594810> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key leftImageView.'
您已将属性声明为隐式展开的选项,并签名确认它们不是零。因此,不需要使用可选的链接 请使用小写属性名称,因为大写名称用于类名:
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 tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCellWithIdentifier(kCellIdentifier) as? DiaryTableViewCell {
// cell.selectionStyle = .None
println("\(x++)) Inside cell")
cell.titleLabel.text = "Hello"
cell.titleLabel.backgroundColor = UIColor.blueColor()
cell.subTitleLabel.text = "World"
cell.contentView.backgroundColor = UIColor.redColor()
return cell
}
return UITableViewCell()
}
如果崩溃,那么您的插座绑定肯定有问题
您是否已将您的
DiaryTableViewCell
设置为InterfaceBuilder中nib的类?您的TableCell类缺少nib的awakeFromNib()
方法:
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 awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
我找到了解决方案:
这里是转载: 我将UI元素链接到了错误的源: 结果如下:
“return nil”-->类型“UITableViewCell”不符合协议“NilLiteralConvertible”是:My DiaryTableViewCell被设置为nib的类。好的,从示例代码中删除了
nil
。那个方法仍然崩溃吗?我不得不恢复到我原来的代码,修改了outlets的小写字母。func()需要一个单元格值才能返回。仍然没有单元格的实例化元素。您的类在nib中吗?然后您必须调用registerNib(…)
。删除注册表类(…)我已经相应地修改了代码(见上文)。但现在我得到了运行时错误:**由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:该类不符合key leftImageView的键值编码。”我找到了解决方案。我的答案在我原来的帖子上:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCellWithIdentifier(kCellIdentifier) as? DiaryTableViewCell {
// cell.selectionStyle = .None
println("\(x++)) Inside cell")
cell.titleLabel.text = "Hello"
cell.titleLabel.backgroundColor = UIColor.blueColor()
cell.subTitleLabel.text = "World"
cell.contentView.backgroundColor = UIColor.redColor()
return cell
}
return UITableViewCell()
}
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 awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}