当基类实现 tableView:heightForRowAtIndexPath: 时如何使用 UITableViewAutomaticDimension:
Posted
技术标签:
【中文标题】当基类实现 tableView:heightForRowAtIndexPath: 时如何使用 UITableViewAutomaticDimension:【英文标题】:How can I use UITableViewAutomaticDimension when the baseclass implements tableView:heightForRowAtIndexPath: 【发布时间】:2016-10-19 11:37:26 【问题描述】:我有大约 30 个视图控制器,它们都有一个实现“heighForRowAtIndexPath”的通用基类。现在我们最近删除了 ios 7 支持,这让我们可以使用 AutoLayout 进行漂亮的自动高度计算。刚刚向我展示了一个相当复杂的单元格,它非常适合这个自动高度。
文档说明了这一点:
如果委托未实现,您可以设置单元格的行高 tableView:heightForRowAtIndexPath: 方法。默认值为 rowHeight 是 UITableViewAutomaticDimension。
看来,由于我的基类实现了 heightFor.. 自动没有生效。
有没有办法解决这个问题?我会以某种方式需要“取消实现”该特定方法。
【问题讨论】:
您可能需要覆盖视图控制器类中的heightForRowAtIndexPath
方法和那里的return UITableViewAutomaticDimension;
。
如果你重新覆盖它并返回值UITableViewAutomaticDimension
会发生什么?
秒杀我! XD
@Mrunal 谢谢,工作。
@NicolasMiari 也谢谢
【参考方案1】:
您可以在子类中从heightForRowAtIndexPath
返回UITableViewAutomaticDimension
:
-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return UITableViewAutomaticDimension;
【讨论】:
完美!非常感谢。我似乎在任何地方都找不到它。 @JonathanWinger-Lang:Apple 文档中有 AutoLayout Guide:developer.apple.com/library/content/documentation/… @Mrunal 是吗?我在这里只能读到我们必须将表视图(而不是单元格)rowSize 设置为自动维度。从委托方法返回它没有任何意义。 rowSize 可能与方法有关,但并不明显。它甚至说“通常我们使用委托方法”,这意味着我们现在不应该使用它,而是将 rowSize 设置为表视图。无论如何,这对我来说似乎并不明显。以上是关于当基类实现 tableView:heightForRowAtIndexPath: 时如何使用 UITableViewAutomaticDimension:的主要内容,如果未能解决你的问题,请参考以下文章