在 UITableViewCell 中为 UITableView 设置动画

Posted

技术标签:

【中文标题】在 UITableViewCell 中为 UITableView 设置动画【英文标题】:Animate UITableView in UITableViewCell 【发布时间】:2016-03-14 01:30:12 【问题描述】:

我正在实现一个带有嵌套 UITableview 的 Accordion 菜单 UI。首先,我创建了一个自定义 UITableViewCell,它里面有一个 UITableView。当点击单元格时,将计算顶层 tableview 的单元格高度,并通过 [UITableView beginUpdates][UITableView endUpdates] 动画更新 table view。

在更新单元格高度的同时,我还动态更改了第二级表格视图的高度。此更改是通过自动布局完成的。在第二级 tableview 更改期间,我希望显示一些行动画。我正在做的是,使用行动画(例如从左到右)一一插入或删除行。

我的问题是,当“打开”***菜单时,单元格的高度动画变大,第二级 tableview 的行动画也正确显示。但是,当“关闭”它时,单元格的高度会动画变小,而无法看到第二级 tableview 的行动画。第二个表格视图的行立即消失了。 有没有人可以告诉我如何正确实现这个动画?

【问题讨论】:

【参考方案1】:

要实现 Accordion 功能,我会向您推荐一种更简单的方法。 您需要管理一个数据源,该数据源将传递给母表视图(例如:数组),该母表视图将包含一个数组,该数组的每个索引都包含作为字典的索引数。这个字典必须有一个 Bool Key。现在他们是 UITableview "viewForHedderInSection" 的一个代表,创建一个 UITableviewCell 并返回它。现在您只需要更新字典中的 Bool 值。您要打开的单元格行只需将该 bool 值设置为 Yes 并将其设置为 No,然后重新加载 tableview。这样,您将获得手风琴。 现在为其每个单元格,即 UIView 添加一个 UITableView 并通过添加和删除行来更新其数据源,并使这 2 个 UITableview 功能不同,从而使实例不同。 我认为这样可以实现这个功能。

【讨论】:

我认为你是对的。这是我能想象到的最好的方式。谢谢。

以上是关于在 UITableViewCell 中为 UITableView 设置动画的主要内容,如果未能解决你的问题,请参考以下文章

在“UITableViewCell”类型的对象上找不到属性

UITableViewCell:允许选择性删除

在 UITableViewCell 中为 detailTextLabel 添加右边距

更改 uitableviewcell 中的自定义附件视图?

如何在 UITableVIewCell 中进行 API 调用

在 UITableViewCell 中为 UITableView 设置动画