自调整 UITableViewCell 不适用于右细节单元格
Posted
技术标签:
【中文标题】自调整 UITableViewCell 不适用于右细节单元格【英文标题】:Self Sizing UITableViewCell not working for Right Detail Cells 【发布时间】:2015-09-26 16:15:49 【问题描述】:我正在尝试使用新的(自 ios8 起)功能来调整 UITableViewCells 的大小。不幸的是,当使用 Right Detail 单元格时,它无法正常工作。
我的设置
我正在使用 UITableViewController。因此,已经配置了 UITableViewCell。我将 UITableViewCell 样式设置为“正确的细节”。然后我将 detailTextLabel 的 numberOfLines 属性设置为 0,以便在我提供一堆文本时增长。
问题
结果如下所示:
当我将 UITableViewCell 更改为“Left Detail”等其他样式时,它可以工作:
如果我使用我现在正在使用的自定义 UITableViewCell 子类,它也可以工作,但我仍然想知道为什么 Right-Detail 样式不起作用。
问题
为什么在使用 Right-Detail 单元格样式时,自定尺寸 UITableViewCell 不起作用?
还有没有人能解决这个问题?
【问题讨论】:
您对正确单元格的限制是什么?用左细节检查同样的事情,但文本更长,所以它也占 3 行 据我所知,约束是自动设置的。这是因为右细节和左细节单元是预定义的 UITableViewCell 样式。 只是猜测,但值得一试:使用高度 【参考方案1】:我遇到了同样的问题。
最终我放弃了“正确的细节”,转而使用自己的自定义:
我创建了自己的继承自 UITableViewCell 的简单类:
class TransactionCell: UITableViewCell
我通过将“表格视图单元格”菜单上的“样式”字段设置为“自定义”并将“TransactionCell”添加到“自定义”的“类”字段中,将我的原型单元格设置为使用该自定义类类”菜单。当您在情节提要中选择原型单元格时,这些菜单可用。
我在原型单元格中添加了两个标签,并通过右键单击从标签拖动到我的类将它们连接到我的自定义类(奇怪的是,我必须清理我的构建才能让我这样做):
class TransactionCell: UITableViewCell
@IBOutlet weak var detailsLabel: UILabel!
@IBOutlet weak var amountLabel: UILabel!
我利用 swift 的自动布局功能为标签添加了新的约束(您需要设置这些以符合自己的要求;如果遇到困难,请参阅有关自动布局的教程)
-
...并在各自的“标签”菜单中设置“行”和“换行符”字段,以便标签之间的间距均匀,以便我的详细信息标签可以弯曲成多行。
它对我有用,让我可以灵活地在每个单元格中快速地在 UITableView 中使用不同数量的多行,同时格式化自动换行,使其看起来漂亮甚至均匀,就像我预期的“正确的细节"自动执行。
如果这是您要找的,请标记为答案:)
【讨论】:
以上是关于自调整 UITableViewCell 不适用于右细节单元格的主要内容,如果未能解决你的问题,请参考以下文章
UItableView automaticDimension 不适用于自定义 UITableViewCell
UIButton 不适用于自定义 UITableViewCell (Swift)
UITableViewAutomaticDimension 不适用于自定义表格单元格