iOS 折叠UITableview的简单实现

                                                          先看下最终效果

效果图

实现思路:布局是这样的 --> 每个section上面添加headerView,每个section下有多个row。

1. 首先HeaderView继承UIButton,自定义自己的HeaderView

HeaderView.h

set方法是设置表头title和箭头状态。(创建、布局代码就不贴了)

HeaderView.m

自定义HeaderView就结束了。

2. 然后在controller里面调用HeaderView。

图1

看图1,这里有三个数组,一个是section数据组,用来显示HeaderView数据;一个是row数据组,用来显示section下的row;另外一个是state数据组,用来记录当前用户点击HeaderView的状态是折叠还是展示。

图2

看图2,row的显示取决于当前HeaderView是折叠还是展示,如果当前state = FoldingSectionStateFold (折叠),row = 0;如果state = FoldingSectionStateShow(展示),row = rowDataArray.count。

图3

图3是设置自定义的HeaderView,当点击HeaderView时候改变当前section状态。由此折叠UITableview完成。

注意:因为HeaderView是添加到UITableview的表头,所以必须设置UITableview的style 为Grouped,这样HeaderView才不会随着UITableview滚动,然而这样导致每个section后边会预留空白而不美观、通过设置FooterView  = [UIView new],并且设置FooterView的Height = 0,消除空白。 

你可能感兴趣的:(iOS 折叠UITableview的简单实现)