如何在 UITableViewCell 中添加多行

Posted

技术标签:

【中文标题】如何在 UITableViewCell 中添加多行【英文标题】:How to Add multiple lines in UITableViewCell 【发布时间】:2016-06-22 12:22:57 【问题描述】:

我目前正在用 Swift 开发一个将数据存储到表中的应用程序。目前,我对正文下的字幕文本有疑问。我想在“许可证号”下添加几行字幕,参考图片。 I. 我已经准备好一切,但不知道如何让它可见。任何帮助将不胜感激

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

【问题讨论】:

请在此处插入您的代码作为文本,而不是屏幕截图,谢谢。也可以试试cell.detailTextLabel!.numberOfLines = 0 在此处发布您的代码,请不要在屏幕截图中。 【参考方案1】:

您应该在一个控制流中(或在一个代码块中)一次分配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,然后分配值。此外,随着字幕行变高,您还需要调整单元格的大小。

【讨论】:

我已经实现了代码。但是我对文本的对齐有疑问。我将如何解决它?图片如下。 i.imgur.com/ZLDBDOc.png?1 正如我之前所说,“此外,您还需要在字幕行变高时调整单元格的大小” 对不起,但请原谅我缺乏知识,但我怎么能做到这一点? 试试这个:override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat return UITableViewAutomaticDimension; 我将在哪里实现此代码?我的代码在哪里?【参考方案2】:

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

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

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

【讨论】:

对不起,我是新手,但是如何在单元格中添加 3 个单独的标签?理想情况下,我希望所有数据都在彼此之下。不想在一行中... 这就是我的假设。点击进入您的表格行。所以你实际上可以进入窗口的右侧,然后转到属性检查器,你会看到一个名为 Style: You want to select custom 的项目。这将完全清空单元格,然后您可以将自己的标签拖到单元格上。为了使用这些,您需要创建一个 TableViewCell 子类并将其命名为您希望调用的单元格。我认为这个视频将是你最好的帮助。 youtube.com/watch?v=EVJiprvRLoo 祝你好运!这听起来很复杂,但是一旦你进入它就不会太糟糕,这是你必须做的很多事情,所以学习它不会有什么坏处:)如果我的回答对你有帮助,请不要'不要忘记将其标记为选定的答案。

以上是关于如何在 UITableViewCell 中添加多行的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 中的 detailTextLabel 中添加多行

如何防止 UITextField 显示多行?

当一个被点击时,UITableViewCell 复选标记被添加到多行

如何为选择多行时使用的 UITableViewCell 图像蒙皮?

UItableviewcell中的多行UIlabel使用Autolayout

多行 UILabel 在 UITableViewCell 内的较小 iPhone 中截断或剪切字符串