Swift UITableViewCell detailTextLabel.text抛出错误'致命错误:无法解包Optional.None'

时间:2014-06-12 17:18:03

标签: ios uitableview swift

这是我生成表格视图的Swift代码。我正在尝试设置带有详细标签的tableView。我认为问题是因为

而产生的
if (cell == nil) {
            println("1")
            cell = UITableViewCell(style: .Subtitle, reuseIdentifier: "CellSubtitle")
            //cell = tableViewCell
        }
永远不会调用

,因此永远不会使用UITableViewCellStyle.Subtitle样式初始化单元格。以下是该方法所需的代码:

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
{
    println("start TableViewCellForRowAtIndexPath")
    var cell: UITableViewCell! = tableView.dequeueReusableCellWithIdentifier("CellSubtitle") as UITableViewCell
    if (cell == nil) {
        println("1")
        cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "CellSubtitle")
        //cell = tableViewCell
    }

    cell.textLabel.text = instructions[indexPath.row].text
    println("2")
    //cell.detailTextLabel
    cell.detailTextLabel.text = "HI"
    println("3")

以下是该方法的控制台输出:

start load
1
2
done load
start TableViewCellForRowAtIndexPath
2
fatal error: Can't unwrap Optional.None
(lldb) 

如何初始化detailTextLabel以插入文字?当我尝试设置标签的文本时,我会收到fatal error: Can't unwrap Optional.None。为什么我收到此错误?

单元格不是在故事板中创建的。我使用tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "CellSubtitle")

初始化了单元格或注册了它的类

2 个答案:

答案 0 :(得分:9)

我认为你在故事板中制作了自己的单元格,这就是为什么" if"从不调用子句。你只需要将单元格的样式改为" Subtitle"在故事板中的检查器中(并删除该if子句)。

答案 1 :(得分:1)

根据我的经验,因为detailTextLabel是可选的,你必须像这样输入:

cell.detailTextLabel?.text = "whatever"

然而,上面的那个人是对的,摆脱了registerClass线。我没有使用那个,我还不确定它到底是什么。