如何在UITableViewCell中添加多行

时间:2016-06-22 12:22:58

标签: xcode swift uitableview subtitle

我目前在Swift中开发一个将数据存储到表中的应用程序。目前我在主要文本下遇到字幕文本问题。我想在"许可证编号"下添加几行字幕。参考图像。我已准备就绪,但不确定如何让它可见。任何帮助将不胜感激

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
    let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Value2, reuseIdentifier: "Nil")

    cell.textLabel!.text = LrnLog.logs[indexPath.row].name    //Trip Date- The data is used for the name
    cell.detailTextLabel!.text = LrnLog.logs[indexPath.row].desc    //Trip Name
    cell.detailTextLabel!.text = LrnLog.logs[indexPath.row].rego    //Vehicle Rego
    cell.detailTextLabel!.text = LrnLog.logs[indexPath.row].licnum  //License Number

    return cell
}

Image 2 is what my app is looking like

2 个答案:

答案 0 :(得分:5)

您应该在一个控制流程中(或在一个代码块内)一次分配text,您不能一个接一个地将不同的文本重新分配给同一个属性。如果你这样做,那么编译器将考虑最新的而不是全部。因此,要回答您的问题,请在cellForRowAtIndexPath:

中尝试
cell.detailTextLabel!.numberOfLines = 0
cell.textLabel!.text = LrnLog.logs[indexPath.row].name
cell.detailTextLabel!.text = "\(LrnLog.logs[indexPath.row].desc)\n\(LrnLog.logs[indexPath.row].rego)\n\(LrnLog.logs[indexPath.row].licnum)"

假设LrnLog.logs[indexPath.row]中的上述任何属性都不是nil,否则会崩溃。因此,最好检查nil然后分配值。当字幕行变高时,您还需要调整单元格的大小。

答案 1 :(得分:1)

您正在更改标签的文字3次,而不是实际更改不同的标签。

您可以将所有这些字符串添加到一起,并将它们放在一行上,或者您需要在单元格中放置3个单独的标签。在对问题发表评论后,您可以将行数设置为0,但仍必须将其组合成一个字符串。此外,我假设您也希望将数据放在该信息的右侧,在这种情况下,自定义单元格确实是您的最佳选择。

如果您决定创建一个自定义单元格,您还需要为您的单元格创建一个自定义TableViewCell类,并将所有插槽拖到它。