我有一个带有一个静态部分的静态表。其他部分是动态的。
我为动态部分创建了Table Section和Table Cell。设置Cell的标识符,为它设置自定义类,甚至执行:
self.tableView.registerClass(UncheckedStoreTableViewCell.self, forCellReuseIdentifier: "StoreCell")
如果我没有用代码注册,那么我得到:
'无法使用标识符StoreCell对单元格进行出列 - 必须注册a nib或标识符的类或连接原型单元格 故事板'
所以当我使用它时:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.section == 0 {
return super.tableView(tableView, cellForRowAtIndexPath: indexPath)
}
let cell = tableView.dequeueReusableCellWithIdentifier("StoreCell", forIndexPath: indexPath) as! UncheckedStoreTableViewCell
return cell
}
有效。但如果我试图更改标签:cell.myLabel.text = "one"
或只是print(cell.myLabel)
得到了
BAD_INSTRUCTION
答案 0 :(得分:2)
您无需在代码中注册您的单元格。
您已正确设置了单元格的标识符,但这还不够。除此之外,您还需要为您的单元格打开Identity Inspector,并将单元格的类设置为UncheckedStoreTableViewCell
。这是一张图片,显示您应该在哪里设置它:
如果没有此步骤,Xcode将无法将您的小区标识符与您的自定义单元格正确关联,因为它对此一无所知!
答案 1 :(得分:2)
顺便说一句,如果你为你的单元格定义了一个自定义的.nib,就有这种方法:registerNib(_:forCellReuseIdentifier:)