自调整 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 不适用于自定义表格单元格

iOS + Swift 2:UITableViewCell 中的动态高度不适用于空视图

子类化 UITableViewCell 不适用于出队

UITableViewCell 动态高度不适用于尺寸类