我正在使用Xcode 6.0.1和Swift。我有一个表格视图,它适用于普通类型的单元格,但在我将其更改为使用自定义单元格后,它开始显示错误。我在故事板中创建了一个Table View Cell,制作了一个Cocoa Touch Class文件,MyCustomCell,它是UITableViewCell的子类,并在Identity检查器中设置故事板中的自定义单元格以使用此类。我将故事板中自定义单元格中的文本字段连接到MyCustomCell.swift文件,作为名为someData的变量。
问题出现在这里:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as MyCustomCell
cell.someData!.text = "testing"
return cell
}
来运行,"测试" line给了我一个致命错误:在解开一个Optional值错误时意外发现nil,假设我在viewDidLoad中手动注册了单元类,如下所示:
tableView.registerClass(MyCustomCell.self, forCellReuseIdentifier: "Cell")
相反,如果我从未注册过课程,而是选择" Cell"在故事板中作为自定义单元格的Restoration ID,我得到了相同的错误nil错误消息,但在" let cell ="而不是"测试"线。
MyCustomCell类连接someData变量并具有init,awakeFromNib和setSelected shell,但没有别的。
我真的不确定如何解决这个问题。也许我需要为自定义单元格创建一个笔尖?任何帮助将不胜感激。
(顺便说一下,我使用核心数据来存储每个表格单元格的实体,但这里没有显示,因为我只关心让自定义单元格正常工作。 )
答案 0 :(得分:2)
您在Interface Builder中使用Restoration ID(Identity Inspector)而不是Indentifier(Attributes Inspector)。
答案 1 :(得分:1)
从故事板实例化UITableView
时,调用
registerClass(_:forCellReuseIdentifier:)
会导致问题。您需要在属性检查器中的storyboard中提供reueseIdentifier。