在点击时扩展 UITableViewCell?

Posted

技术标签:

【中文标题】在点击时扩展 UITableViewCell?【英文标题】:Expanding UITableViewCell on Tap? 【发布时间】:2012-11-22 21:41:34 【问题描述】:

当我点击一个UITableView 单元格时,我需要展开它(动画也一样)。但是我不知道被点击的单元格,我在这里看到了答案:Can you animate a height change on a UITableViewCell when selected?

这似乎是一个非常受欢迎的答案,不仅仅是在问题中。但是,我需要获取单元格,那么heightForRowAtIndexPath方法中如何获取单元格呢?

因为我已经尝试过了:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

但是,在 heightForRowAtIndexPath 方法中使用它会使应用程序在第一次运行时(当视图加载时)崩溃,我认为它会陷入无限循环。

无论如何,如果我采用这种方法,你会建议我如何解决这个问题?我需要访问该单元格。或者您将如何扩展您的 tableview 单元格(动画)?

【问题讨论】:

您能否使用自定义的UITableViewCell 子类来覆盖setSelected:animated:setHighlighted:animated: 来执行动画,而不是在高度计算方法中触发或执行它们?据我所知,只有在点击单元格时才会调用带有 highlight=YES 的 setHighlighted:animated:,因此如果您覆盖它并且不调用 super 实现,它可能是执行您的 on- 的有用钩子点击动画。 【参考方案1】:

继续调整高度。

我建议尽可能多地从自动调整蒙版中获得更多信息,因为它们过去对我很有效。

如果您需要更细粒度的控制,您可以创建一个子类并覆盖setFrame: 方法以找出帧何时改变大小,然后在那里适当地设置动画。

【讨论】:

以上是关于在点击时扩展 UITableViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 扩展自动布局

按单词包装 UILabel 并以编程方式扩展 UITableViewCell 高度

向左滑动时未剪切子视图以删除 UITableViewCell

RxSwift之订阅UITableViewCell里的按钮点击事件

在 UITableViewCell 中添加 UICollectionView 后 UI 突然发生变化

在 Xcode 9.0.1 单元格大小的 UITableviewcell 中它不会在运行时扩展?