Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我得到了UITableViewCell,但是cell';s元素为零。为什么?_Uitableview_Swift - Fatal编程技术网

我得到了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
    }
}