使用自定义单元类时的Tableview错误

时间:2018-04-16 20:13:01

标签: ios swift xcode uitableview

我正在尝试以编程方式使用自定义单元类创建tableViewController,但是我收到此错误:

  

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法使用标识符cellId对单元格进行出列 - 必须为标识符注册一个nib或类或在故事板中连接原型单元格'   ***首先抛出调用堆栈:

我的应用程序中有几个UItableViews与自定义单元格,它们都工作正常,但由于某种原因,这一个不起作用。我花了最后几个小时试图解决这个问题,但看不出问题,有人可以帮帮我吗?

这是我的tableview类:

class cameraInfoCell: UITableViewCell {

    override func layoutSubviews() {
        super.layoutSubviews()

        self.textLabel?.frame.origin.x = 20
        self.detailTextLabel?.frame.origin.x = 20
        self.detailTextLabel?.textColor = UIColor(red:0.73, green:0.73, blue:0.73, alpha:1.0)
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: .subtitle, reuseIdentifier: reuseIdentifier)

    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

这是我的自定义单元类:

{{1}}

2 个答案:

答案 0 :(得分:5)

您使用两个不同的cellID:

在您的课程中,您定义了一个cellId变量

let cellId = "cellId"
您在cellForRowAt中使用的

    let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! cameraInfoCell

addTableView中,您使用硬编码字符串" MyCell":

    tableView.register(UITableViewCell.self, forCellReuseIdentifier: "MyCell")

要解决此问题,请在两个位置使用cellId,因此请将addTableView方法中的代码更改为:

    tableView.register(cameraInfoCell.self, forCellReuseIdentifier: cellId)

答案 1 :(得分:1)

您必须在viewDidLoad

中注册该表
 tableView.register(cellClassName.self, forCellReuseIdentifier: "cellId")