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,消除空白。 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 版权声明:未经本人允许,禁止转载. 1. TableView初始化 1.UITableView有两种风格:UITa...
    萧雪痕阅读 2,921评论 2 10
  • UITableView 是 iOS 开发中必不可少的一个控件,基本上每一个项目都会有多个地方会用到。详细的了解UI...
    破夕_____________阅读 2,154评论 0 4
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,805评论 1 9
  • 社会阅历浅的人,当冒犯发生时,会第一时间追随原始情绪进行反击,然后这样的反击多半没有深入思考,并缺乏策略,最终的结...
    天空的羁绊阅读 656评论 0 0
  • 2019-8-7 星期二 25/90 一、亿万富翁制造机分享 美女,早上好!我爱你!吻!微笑。 每天爱自己多一点,...
    陆丽贤阅读 149评论 0 0