2016-11-29 52 views
0

我有一个表格视图与静态内容,我试图访问所选行的标签文本,但它由于某种原因返回nil。什么可能导致它?label.text为表格单元格返回无(swift)

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let currentCell = tableView.cellForRow(at: indexPath) as UITableViewCell? 
    let label = currentCell!.textLabel 
    if label != nil { 
     let text = label!.text 
     NSLog(text ?? "Label text is nil") 
    } else { 
     NSLog("Label is nil") 
    } 
} 

在我的例子我看到标签文本是零

+0

如果tableview有静态内容,为什么你需要访问标签文本?你不能只访问填充你的tableview的数组中的数据吗?就像'let text = labelTextArray [indexPath.row]' –

+0

@KaylaGalway,因为该表没有数据 - 它是从IB静态的。 。 Elena,你确定你正在访问正确的标签吗?也许你的文本是在其他标签上,比如'detailTextLabel'或者其他你手动添加的标签? – jovanjovanovic

+1

@jovanjovanovic,问题是在单元格的样式(这是自定义),我改变它后,我得到了文字 –

回答

0

这是一个XY problem(链接),

你不应该存储你的电池的观点模型数据。单元格是一个视图对象。它用于显示信息并收集用户的输入。

您应该将数据存储在模型对象中。对于表视图,一个数组(或一个用于分区表视图的数组数组)是一个不错的选择。

不是试图从单元格标签中获取文本,而是使用indexPath从模型中查找所需的字符串。

0

确保您将单元格的样式设置为属性检查器,而不是“自定义”。 如果它是自定义的,则从您的代码看来,您似乎没有定位它。

+0

解决了这个问题!非常感谢! –

+0

很高兴听到! 有同样的问题,太令人沮丧了。 –