可折叠的表格细胞[Swift 3]

时间:2016-10-23 02:00:12

标签: swift uitableview uidatepicker

我正在尝试重新创建日历应用在创建新活动时使用的可折叠日期选择器。我已经举例说明了我在github

尝试做的事情。

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

编辑:这个问题与重复答案不同,因为我想扩展一个单独的表格单元格,而不是选择相同的单元格。但是,我个人可以使用相同的单元扩展。我还更新了我的github项目,以便将来人们可以看到一个有效的例子。

1 个答案:

答案 0 :(得分:4)

很简单;你可能在这里过分思考。此功能内置; Apple 希望您能够扩展和收缩单元格。您只是没有使用Apple提供的API。用它!这是怎么回事。

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

要显示日期选择器单元格,请更改heightForRowAtIndexPath返回的内容(如果您拥有包含此值的属性,这是最简单的,因此您只需更改属性值并让heightForRowAtIndexPath从中读取那里)说:

    self.tableView.beginUpdates()
    self.tableView.endUpdates()

这就是它的全部内容!

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

enter image description here