ios 列表折叠效果

#import"TableDownUpVC.h"#import"TableViewCell_TableSelect.h"@interfaceTableDownUpVC(){

    NSMutableDictionary *dicSelet;

    NSArray *arrData;

    NSMutableArray *arrStatus;

    NSInteger selectFlag;

    NSMutableDictionary *dictShow;

}@property (nonatomic, strong) UIImageView *imgArror;@end@implementationTableDownUpVC- (void)viewDidLoad {

    [super viewDidLoad];

    self.tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

    self.title = @"列表折叠效果";

    dictShow = [[NSMutableDictionary alloc] init];

    arrStatus = [[NSMutableArray alloc] init];

    NSDictionary *dict0 = @{@"section":@"头部0",

                            @"content":@[@{@"title":@"Section0",@"subTitle":@"Row0",@"avator":@"user_default_blue"},

                                        @{@"title":@"Section0",@"subTitle":@"Row1",@"avator":@"user_default_blue"},

                                        @{@"title":@"Section0",@"subTitle":@"Row2",@"avator":@"user_default_blue"}]};

    NSDictionary *dict1 = @{@"section":@"头部1",

                            @"content":@[@{@"title":@"Section1",@"subTitle":@"Row0",@"avator":@"user_default_blue"},

                                        @{@"title":@"Section1",@"subTitle":@"Row1",@"avator":@"user_default_blue"},

                                        @{@"title":@"Section1",@"subTitle":@"Row2",@"avator":@"user_default_blue"}]};

    NSDictionary *dict2 = @{@"section":@"头部2",

                            @"content":@[@{@"title":@"Section2",@"subTitle":@"Row0",@"avator":@"user_default_blue"},

                                        @{@"title":@"Section2",@"subTitle":@"Row1",@"avator":@"user_default_blue"},

                                        @{@"title":@"Section2",@"subTitle":@"Row2",@"avator":@"user_default_blue"}]};

    arrData = @[dict0,dict1,dict2];

    dicSelet = [[NSMutableDictionary alloc] init];

    //初始化选中状态(默认都不选择)    for (NSInteger i=0; i

        NSArray *content = arrData[i][@"content"];

        NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];

        for (NSInteger j=0; j

            [dict setObject:@"0" forKey:STR_NUM(j)];

        }

        [arrStatus addObject:dict];

    }

    //初始化列表头部折叠状态    for (NSInteger i=0; i

        [dictShow setObject:@"0" forKey:STR_NUM(i)];

    }

}#pragma mark - TableViewDataSource,UITableViewDelegate 扩展- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return arrData.count;

}

- (NSInteger)tableViewEx:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    NSString *isShow = dictShow[STR_NUM(section)];

    if ([isShow isEqualToString:@"0"]) {

        NSArray *arr = arrData[section][@"content"];

        return arr.count;

    } else {

        return 0;

    }

}

- (CGFloat)tableViewEx:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return 60;

}

- (UITableViewCell *)tableViewEx:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString * identifier = @"cellIdentifier";

    TableViewCell_TableSelect *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    if (cell == nil) {

        cell = [[TableViewCell_TableSelect alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];

    }

    [cell setDictInfo:arrData[indexPath.section][@"content"][indexPath.row]];

    [cell setAccessoryImage:arrStatus[indexPath.section][STR_NUM(indexPath.row)]];

    return cell;

}

- (void)tableViewEx:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    NSMutableDictionary *dict = arrStatus[indexPath.section];

    NSString *str = dict[STR_NUM(indexPath.row)];

    if ([str isEqualToString:@"0"]) {

        [dict setValue:@"1" forKey:STR_NUM(indexPath.row)];

    } else {

        [dict setValue:@"0" forKey:STR_NUM(indexPath.row)];

    }

    [self.tableView reloadData];

}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

{

    return 50;

}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

{

    return 10;

}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

{

    UIView *headerView = [UICommonCtrl commonViewWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 50) color:kColor_White];

    UILabel *title = [UICommonCtrl commonLabelWithFrame:CGRectMake(10, 15, 200, 20)

                                                  text:arrData[section][@"section"]

                                                  color:kColor_Black

                                                  font:kFont_Large

                                          textAlignment:NSTextAlignmentLeft];

    [headerView addSubview:title];

    _imgArror = [UICommonCtrl commonImageViewWithFrame:CGRectMake(SCREEN_WIDTH-20, 22.5, 10, 5) image:nil];

    [headerView addSubview:_imgArror];

    NSString *str = [dictShow objectForKey:STR_NUM(section)];

    if ([str isEqualToString:@"0"]) {

        _imgArror.image = [UIImage imageNamed:@"icon_down"];

    } else {

        _imgArror.image = [UIImage imageNamed:@"icon_up"];

    }

    @weakify(self)

    UIButton *btn = [UICommonCtrl commonButtonWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 50)

                                                  text:@""                                                  color:kColor_Black

                                                  font:kFont_Large

                                        backgroundImage:nil                                                  block:^(UIButton *btn) {

                                                      @strongify(self)

                                                      NSString *str = [dictShow objectForKey:STR_NUM(section)];

                                                      if ([str isEqualToString:@"0"]) {

                                                          [dictShow setValue:@"1" forKey:STR_NUM(section)];

                                                      } else {

                                                          [dictShow setValue:@"0" forKey:STR_NUM(section)];

                                                      }

                                                      [self refreshSection:section];

                                                  }];

    [headerView addSubview:btn];

    for (NSInteger i=0; i<2; i++) {

        UIView *line = [UICommonCtrl commonLineViewWithFrame:CGRectMake(0, (50-LINE_SIZE)*i, SCREEN_WIDTH, LINE_SIZE) color:kColor_Line];

        [headerView addSubview:line];

    }

    return headerView;

}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

{

    UIView *footerView = [UICommonCtrl commonViewWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 10) color:kColor_Background];

    return footerView;

}

- (void)refreshSection:(NSInteger)section

{

    NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:section];

    [self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];

}@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容