我目前在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
}
答案 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类,并将所有插槽拖到它。