美文网首页iOS 知识点ios
iOS UITableview实现展开折叠效果

iOS UITableview实现展开折叠效果

作者: 小心韩国人 | 来源:发表于2017-01-16 14:58 被阅读7379次

    使用UItableview实现展开折叠效果,话不多说,先看一下运行效果:

    001.gif
    讲一下实现的大概思路:
    1. 自定义每个section的headerView,并且给headerView添加tap手势.
    2. 在tap触发的方法中判断当前点击的section状态,然后调用*- (void)reloadSections:(NSIndexSet )sections withRowAnimation:方法刷新section.
    几个关键的地方:

    1.在点击section的时候,需要判断当前点击的section的状态是展开还是关闭.我用的方法是创建了一个NSMutableArray,在这个数组中添加和section的count相同的元素,这里我存放的就是0和1的字符串,0代表关闭,1代表展开,代码如下:

     for (NSInteger i = 0; i < _provinceArray.count; i++) {
            [_isExpandArray addObject:@"0"];//0:没展开 1:展开
        }
    

    如果你有更好的方法,可以留言告诉我一下,谢谢~

    2.在numberOfRowsInSection这个方法中,需要根据标识,来决定每个section中row的个数,记住,千万不要写死了.

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        if ([_isExpandArray[section]isEqualToString:@"1"]) {
            NSString *keyProvince = _provinceArray[section];
            NSArray *cityArray = [_provinceDic objectForKey:keyProvince];
            return  cityArray.count;
        }else{
            return 0;
        }
    }
    

    3.最后一个比较关键的点就是tap手势所触发的方法,这个方法主要做两件事:首先要判断section的状态,更改小三角形的图标;然后调用reloadSections刷新section:

    - (void)tapAction:(UITapGestureRecognizer *)tap{
        if ([_isExpandArray[tap.view.tag] isEqualToString:@"0"]) {
            //关闭 => 展开
            [_isExpandArray removeObjectAtIndex:tap.view.tag];
            [_isExpandArray insertObject:@"1" atIndex:tap.view.tag];
        }else{
            //展开 => 关闭
            [_isExpandArray removeObjectAtIndex:tap.view.tag];
            [_isExpandArray insertObject:@"0" atIndex:tap.view.tag];
            
        }
        NSIndexPath *indexPath = [NSIndexPath indexPathForItem:0 inSection:tap.view.tag];
        NSRange rang = NSMakeRange(indexPath.section, 1);
        NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:rang];
        [_provinceTableView reloadSections:set withRowAnimation:UITableViewRowAnimationFade];
        
    }
    

    通过这几步就能实现展开收起的效果了.demo下载点击这里

    相关文章

      网友评论

        本文标题:iOS UITableview实现展开折叠效果

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