【问题标题】:iOS: UITableView cells with multiple lines?iOS:具有多行的 UITableView 单元格?
【发布时间】:2011-05-11 12:43:58
【问题描述】:

拥有多行 UITableView 单元格的最佳方式是什么?比方说 5.. 还是 6?

而不是 textLabel 和 la detailTextLabel ?我应该创建自定义样式吗?还是自定义视图?

任何教程/示例都被广泛接受。

谢谢

【问题讨论】:

  • 单元格的高度应该变化吗?还是固定的?
  • @Nick Weaver 是的,应该有所不同,否则没有空间

标签: ios ipad


【解决方案1】:

您可以为此使用 UITableViewCell 中现有的 UILabel 视图。秘诀是做到以下几点:

cell.textLabel.numberOfLines = 0;
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;

默认情况下,UILabel 只允许 1 行文本。将 numberOfLines 设置为 0 基本上消除了对显示的行数的任何限制。这允许您拥有多行文本。

将 lineBreakMode 设置为 Word Wrap 告诉它将长文本行自动换行到标签的下一行。如果你不想这样,你可以跳过那一行。

您可能还需要根据需要调整表格视图单元格的高度,以便为您添加的多行文本腾出更多空间。

对于 iOS 6.0 及更高版本,使用 NSLineBreakByWordWrapping 代替已弃用的 UILineBreakModeWordWrap

【讨论】:

  • 嗯,听起来不错。我问的问题不是很准确:我实际上需要精确设置下一行,我不能只是换行。我应该在 NSStrings 中添加 "\n" 吗?
  • 添加一个 '\n'(连同我上面的解决方案)应该可以让您在标签中包含多行文本。
  • 完成后如何自动调整高度?
  • 对于 iOS6 或更高版本使用 NSLineBreakByWordWrapping。 (UILineBreakModeWordWrap 已弃用)
  • 就我而言,我需要更新界面构建器/故事板。我包括'cell.textLabel.numberOfLines = 0;'但是只有在情节提要中找到单元格“行”并将其从“1”更改为“0”后才换行。我猜如果代码和情节提要冲突,应用程序遵循情节提要设置。
【解决方案2】:

从 Swift 3 开始:

func allowMultipleLines(tableViewCell: UITableViewCell) {
    tableViewCell.textLabel?.numberOfLines = 0
    tableViewCell.textLabel?.lineBreakMode = .byWordWrapping
}

【讨论】:

  • .ByWordWrapping 就足够了。
【解决方案3】:

有一种方法可以仅使用情节提要来完成此操作。首先,选择单元格并转到右侧面板上的属性部分。第一个选项应该是“样式”。将其从自定义更改为基本。现在,在您的单元格中,您应该会看到显示“标题”的文本。双击它,在右侧面板中应该可以设置行数。

【讨论】:

    【解决方案4】:

    我发现这在 Xcode 版本 8.0 (8A218a) 上对我有用

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)    UITableViewCell {
            let cell = UITableViewCell()
           //MARK: word wrapping in cell
            cell.textLabel?.text = self.choices[(indexPath as NSIndexPath).row]
            cell.textLabel?.numberOfLines=0 // line wrap
            cell.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
    
            return cell
        }
    

    【讨论】:

      【解决方案5】:
      cell.textLabel.numberOfLines = 0
      

      一起

      tableView.rowHeight = UITableView.automaticDimension
      

      有效但仅在行数有限(2-3 行)时

      我还必须将单元格字段嵌入StackView。这让一切变得不同。现在我可以显示任意多的行了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多