关于折叠tableview

我是一个不爱写东西的人,第一次写东西,可能写的不是很清楚。我也是个程序猿中的菜鸟,有错的地方希望能有大神多多指教。

关于这个折叠,我在Code4App上面找了一些三方的,可是发现都不是很好用,说白了就是我技术不够,看不懂。然后就被逼着自己写了一个。我写的就是简单的那种,没有展开收起来的那个动画,如果说想要动画的话可以用系统自带的这个方法:- (void)insertRowsAtIndexPaths:(NSArray*)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;动态添加子cell,这个会有一个动画。这里我就不详细说明了。

折叠实现并没有什么技术,就是一个简单的逻辑问题,主要清理逻辑就行了。

在做折叠的时候tableview的numberOfSectionsInTableView返回的应该是section的count。

tableview的numberOfRowsInSection则需要去判断当前section是否展开,并且点击的是哪一个section。这里就需要一个bool变量isOpen来记录是否展开,一开始默认为NO。一个变量selectIndexPath来记录选择的哪一个section。如果是展开,点击的第一个section就返回第一个section的cell+1,(加1是因为还有父cell,如果不加1,子cell就会少一个)。没有展开,就只有父cell,return 1。

tableview的cellForRowAtIndexPath,当section没有展开的时候,indexPath.row只会等于0,大于0的情况,必须是section展开

点击section时,有个函数-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath   可以获取点击的行号

判断section是否展开,是展开时,分为两种种情况。第一种:点击的不是同一个section,就关闭当前的section,获取点击的section并且打开获取的section的子cell。第二种:又分为两种情况。A:点击的是同一个section,获取当前的section,关闭当前section。B:点击的同一个section下的子cell,那么就进入详情或者不做操作。

是关闭时,设置isOpen==YES,获取点击的section,展开section下的子cell。

最后刷新tableview。

以上内容仅供参考,如果喜欢那就点个喜欢。

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

推荐阅读更多精彩内容

  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,118评论 3 38
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,295评论 4 61
  • 版权声明:未经本人允许,禁止转载. 1. TableView初始化 1.UITableView有两种风格:UITa...
    萧雪痕阅读 2,922评论 2 10
  • 如果可以,我愿意将自己劈成两半,一半给家庭,一半给工作,工作交给干练的我,家庭交给能干的我;如果可以我愿意将自己劈...
    诗华阅读 588评论 0 0
  • 做媒体,特别是做普洱茶行业的媒体,有个让许多茶友羡慕的好处就是,可以品尝到各种各样的茶。有还未上市的新品,有不小心...
    5ebc5e57260e阅读 266评论 2 3