iOS tableview cell 的展开收缩

孟鹏海
2023-12-01

 

iOS tableview cell 的展开收缩

 

#import "ViewController.h"

 

 

 

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>{

    

    NSMutableArray *_allArray;//创建一个数据源数组

    

    NSMutableDictionary *dic;//创建一个字典进行判断收缩还是展开

    

}

 

 

 

@property (nonatomic,strong)UITableView *tableView;

 

 

 

@end

 

 

 

@implementation ViewController

 

 

 

- (void)viewDidLoad {

    

    [super viewDidLoad];

    

    self.view.backgroundColor = [UIColor whiteColor];

    

    dic = [NSMutableDictionary dictionary];

    

    _allArray = [@[@[@"12",@"32",@"12",@"12",@"12",@"32"],@[@"12",@"12",@"12",@"32",@"12",@"12",@"12",@"32",@"12",@"12",@"12",@"32"],@[@"12",@"12",@"32"]]mutableCopy];

    

    [self.view addSubview:self.tableView];

    

}

 

 

 

//懒加载

 

- (UITableView *)tableView{

    

    if (!_tableView) {

        

        _tableView = [[UITableViewalloc]initWithFrame:CGRectMake(0, 64, 375, 667 - 64)style:UITableViewStylePlain];

        

        _tableView.delegate = self;

        

        _tableView.dataSource = self;

        

    }

    

    return _tableView;

    

}

 

 

 

- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView{

    

    return _allArray.count;

    

}

 

 

 

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

    

    return 30;

    

}

 

//

 

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

    

    UIView *view = [UIView new];

    

    view.backgroundColor = [UIColor redColor];

    

    //创建一个手势进行点击,这里可以换成button

    

    UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc]initWithTarget:self action:@selector(action_tap:)];

    

    view.tag = 300 + section;

    

    [view addGestureRecognizer:tap];

    

    return view;

    

}

 

 

 

- (void)action_tap:(UIGestureRecognizer *)tap{

    

    NSString *str = [NSStringstringWithFormat:@"%ld",tap.view.tag - 300];

    

    if ([dic[str] integerValue] == 0) {//如果是0,就把1赋给字典,打开cell

        

        [dic setObject:@"1" forKey:str];

        

    }else{//反之关闭cell

        

        [dic setObject:@"0" forKey:str];

        

    }

    

    // [self.tableView reloadData];

    

    [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:[str integerValue]]withRowAnimation:UITableViewRowAnimationFade];//有动画的刷新

    

    

    

    

    

}

 

 

 

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

    

    NSString *string = [NSStringstringWithFormat:@"%ld",section];

    

    if ([dic[string] integerValue] == 1 ) {  //打开cell返回数组的count

        

        NSArray *array = [NSArrayarrayWithArray:_allArray[section]];

        

        return array.count;

        

    }else{

        

        return 0;

        

    }

    

}

 

 

 

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

    

    return 35;

    

}

 

 

 

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

    

    UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"cell"];

    

    if (!cell) {

        

        cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleValue1reuseIdentifier:@"cell"];

        

    }

    

    cell.backgroundColor = [UIColor orangeColor];

    

    cell.textLabel.text = _allArray[indexPath.section][indexPath.row];

    

    return cell;

    

}

 

 

 

@end

 类似资料: