可折叠表格单元格 [Swift 3]

doh*_*z42 0 uidatepicker uitableview swift

我正在尝试重新创建日历应用程序在创建新事件时使用的可折叠日期选择器。我在github上放了一个我正在尝试做的事情的例子

简而言之,我创建了一个静态表,添加了三个单元格。第一个单元格用于日期,并包含一个用于切换第二个单元格的按钮。第二个单元格是日期选择器。第三个单元格是任意的。在代码中,我试图将表格单元格的高度(如果需要,还有日期选择器)设置为零,然后在用户单击按钮时切换大小。无论我尝试过什么,我都无法 a) 让单元格在没有某种间隙的情况下折叠,以及 2) 让动画从展开到折叠再回到平滑过渡。

编辑:这个问题与重复的答案不同,因为我想展开一个单独的表格单元格,而不是与被选中的单元格相同的单元格。但是,我个人可以接受使用同细胞扩增。我还更新了我的 github 项目,以便未来的人们可以看到一个工作示例。

mat*_*att 6

这很简单;你可能在这里想多了。此功能是内置的;Apple希望您能够扩展和收缩单元格。您只是没有使用 Apple 提供的 API。用它!就是这样。

日期选择器单元格始终存在。但他们的身高是零(和他们的clipsToBoundsIS true),所以你没有看到他们。因此,实现heightForRowAtIndexPath为这些单元格返回零。

要显示日期选择器单元格,请更改heightForRowAtIndexPath返回的内容(如果您有一个保存此值的属性,这是最简单的,因此您可以更改属性值并heightForRowAtIndexPath从那里读取它)并说:

    self.tableView.beginUpdates()
    self.tableView.endUpdates()
Run Code Online (Sandbox Code Playgroud)

这里的所有都是它的!

这是我制作的快速演示。红色和橙色的东西是细胞。该表有三个单元格,但第二个单元格包含日期选择器,从零高度开始:

在此处输入图片说明