折叠表格思路及遇到的问题(tableView:viewForHeaderInSection:的section从1开始,不是从0开始)

Posted lvyong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了折叠表格思路及遇到的问题(tableView:viewForHeaderInSection:的section从1开始,不是从0开始)相关的知识,希望对你有一定的参考价值。

项目需要做了一个类似qq联系人的折叠表格,思路很简单:设置每个section的header,在header上显示组名等信息,然后根据折叠与否,设置每个section中cell的数量,如果折叠,则将之设置为0,否则设置为实际的cell数量,然后刷新表格即可。

那么问题来了:

1、如果使用UITableViewStylePlain样式的表格,那么header是会在表格滑动的时候在顶部悬浮,而不是跟随表格的滑动而一起滑动。

2、如果使用了UITableViewStyleGrouped样式的表格,tableView:viewForHeaderInSection:的section的值会从1开始,而不是从0开始

解决方案:

问题1:将表格的样式设置为UITableViewStyleGrouped,这样header会随着表格滑动而滑动,不会在顶部悬停。但是此时样式会有所改变,因为UITableViewStyleGrouped表格会有默认的header及footer高度(好像是13),根据自己的需要,设置相应的header及footer即可。

问题2:产生的原因是使用sectionHeaderHeight来设置header的高度,而不是使用委托方法(tableView:heightForHeaderInSection:)来设置,这应该是个bug。

以上是关于折叠表格思路及遇到的问题(tableView:viewForHeaderInSection:的section从1开始,不是从0开始)的主要内容,如果未能解决你的问题,请参考以下文章

模拟列表中的边框折叠(无表格)

展开和折叠 HTML 表数据行

通过使用约束自行调整大小来展开和折叠 TableView 单元格

点击动画折叠整个表格

UITableView 单元格折叠动画看起来很糟糕

在 Firefox 表格边距不折叠