在 UITableViewCell 中的 detailTextLabel 中添加多行

Posted

技术标签:

【中文标题】在 UITableViewCell 中的 detailTextLabel 中添加多行【英文标题】:Add multiple lines to detailTextLabel in UITableViewCell 【发布时间】:2010-08-20 23:07:03 【问题描述】:

我使用的是UITableView,单元格样式为UITableViewCellStyleValue1

我想在detailTextLabel 中有多行,这可能吗?还是我必须制作一个自定义单元格?

【问题讨论】:

【参考方案1】:

您可以设置cell.detailTextLabel.numberOfLines = 2 以在其中获取 2 行。但是,我怀疑 UITableViewCell 在这种情况下会按照您的预期布置标签。您可能希望继承 UITableViewCell 并覆盖 -layoutSubviews 以根据需要定位标签。您可以致电[super layoutSubviews],然后调整标签的位置。您可能需要使用-[NSString sizeWithFont:constrainedToSize:lineBreakMode:] 来计算详细文本标签的正确大小。

或者,您可以尝试在-tableView:willDisplayCell:forRowAtIndexPath: 中进行调整,而不是继承 UITableViewCell,但如果单元格决定需要重新布局,那么您的调整将被删除。我建议您使用子类化方法。

编辑:顺便说一句,使用子类方法,您只需将[UITableViewCell alloc] 更改为[MyTableViewCellSubclass alloc]。由于您没有引入新的方法或属性,因此该变量仍可以保持为 UITableViewCell 的类型,您无需更改任何其他代码。

【讨论】:

非常感谢您的回复。我对 UITableViewCell 进行了子类化,但我创建了一个笔尖来布局标签,而不是以编程方式进行。这和你建议我做的有什么不同。还是谢谢。 创建一个 nib 非常好(不过如果你使用的是 ios 4.0,我建议使用 UINib 来优化 nib 加载)。使用-layoutSubviews 调整标签的好处是您可以重用现有的textLabeldetailTextLabel 属性,但您绝不需要使用这些属性。 cell.detailTextLabel 在最近的 swift 版本中现在是可选的,所以 cell.detailTextLabel.numberOfLines = 2 应该是 cell.detailTextLabel!.numberOfLines = 2 不应该是cell.detailTextLabel?.numberOfLines = 2。强制展开意味着如果您在没有详细标签的单元格上运行该行,您的整个应用程序将会崩溃。【参考方案2】:

detailTextLabel 是一个 UILabel,自动换行规则与您创建的标签一样适用。

http://developer.apple.com/iphone/library/documentation/uikit/reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instp/UILabel/lineBreakMode

编辑:只是想,如果文本超出某些行阈值,您还需要更改单元格的高度。大概 2 或 3 个就可以了。

【讨论】:

【参考方案3】:

至少在 iOS 11 上,只要添加这一行就可以了。

cell.detailTextLabel.numberOfLines = 2;

【讨论】:

【参考方案4】:

在 SWIFT 4.0 及更高版本上:

cell.detailTextLabel?.numberOfLines = 0

除非您不想超过 2 行,否则不要将 numberOfLines 设置为 2 作为 cmets 中的建议,因为这不是一种有效的编码方式。它不是动态的。行数可能会根据您的屏幕大小、辅助功能设置等而有所不同。将 numberOfLines 设置为 0,让操作系统使用尽可能多的行来正确显示您的文本。

【讨论】:

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

当移动到嵌入在 UITableViewCell 中的 UITextView 中的新行时,光标消失

UITableVIewCell 中的 UIScrollView 不会滚动

UITableViewCell 事件中的 UIButton 不起作用

UITableViewCell 中的 UICollectionView

在 UITableviewCell 中的气泡上显示图像

UITableViewCell 中的 UITextField - UIButton