美文网首页iOS Developer
关于折叠tableview

关于折叠tableview

作者: Fanxia | 来源:发表于2016-07-25 16:16 被阅读0次

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

    关于这个折叠,我在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。

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

    相关文章

      网友评论

        本文标题:关于折叠tableview

        本文链接:https://www.haomeiwen.com/subject/ndvgjttx.html