可折叠 Table 个单元格 [Swift 3]

Collapsable Table Cells [Swift 3]

我正在尝试重新创建日历应用程序在创建新事件时使用的可折叠日期选择器。我在 github

上举了一个我正在尝试做的例子

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

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

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

日期选择器单元格始终存在。但它们的高度为零(它们的 clipsToBoundstrue),因此您看不到它们。因此,对这些单元格实施 heightForRowAtIndexPath 到 return 零。

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

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

仅此而已!

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