#import "testViewController.h" #import "testTableViewCell.h" @interface testViewController ()<UITableViewDelegate,UITableViewDataSource> @property(nonatomic,strong)UITableView *tableView; //数组 - 打开/关闭组 @property(nonatomic,strong)NSMutableArray *closeArr; //数组 - 头标 @property(nonatomic,strong)NSArray *array; @end @implementation testViewController #pragma mark - 懒加载 //tableView懒加载 -(UITableView *)tableView { if (!_tableView) { UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 100, self.view.bounds.size.width, self.view.bounds.size.height-150)]; tableView.backgroundColor = [UIColor colorWithRed:0.95f green:0.95f blue:0.95f alpha:1.00f]; tableView.dataSource = self; tableView.delegate = self; tableView.separatorStyle = UITableViewCellSeparatorStyleNone; [self.view addSubview:tableView]; _tableView = tableView; } return _tableView; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. _array = @[ @"我是sec1", @"我是sec2", @"我是sec3",@"我是sec4",@"我是sec5",@"我是sec6"]; /***** 创建关闭数组的两种办法 *****/ //方法一 : 手动写 // NSArray *array = @[@"0",@"1",@"2",@"3",@"4",@"5"]; // _closeArr = [NSMutableArray arrayWithArray:array]; //方法二 :根据_array计算 _closeArr = [NSMutableArray array]; for (int i = 0; i<_array.count; i++) { NSString *tmpStr = [NSString stringWithFormat:@"%d",i]; [_closeArr addObject:tmpStr]; } self.view.backgroundColor = [UIColor lightGrayColor]; [self tableView]; } #pragma mark - table View dataSource //组数 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return _array.count; } //行数 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { NSString *string = [NSString stringWithFormat:@"%ld",section]; if ([_closeArr containsObject:string]) { return 1; }else { return 0; } } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { testTableViewCell *cell = [testTableViewCell destinationCellWithTableView:tableView]; return cell; } #pragma mark - table View Delegate //行高 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 150; } //-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath //{ // [tableView deselectRowAtIndexPath:indexPath animated:YES]; //} ////脚高 //-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section //{ // return 10; //} #pragma mark -头视图 -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 30; } -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { CGFloat viewbgW = self.view.bounds.size.width; CGFloat viewbgH = 30; UIView *viebg = [[UIView alloc]init]; viebg.frame = CGRectMake(0, 0, viewbgW ,viewbgH); viebg.backgroundColor = [UIColor whiteColor]; viebg.tag = section+100; CGFloat space = 10; UILabel *label = [[UILabel alloc]init]; label.frame = CGRectMake(space, 0, viewbgW-space*2, viewbgH); label.text = _array[section]; label.textColor = [UIColor redColor]; [viebg addSubview:label]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = viebg.bounds; btn.tag = section+100; [btn addTarget:self action:@selector(groupClose:) forControlEvents:UIControlEventTouchUpInside]; [viebg addSubview:btn]; return viebg; } #warning close/open //关闭按钮 -(void)groupClose:(UIButton *)btn { NSString *string = [NSString stringWithFormat:@"%ld",btn.tag-100]; if ([_closeArr containsObject:string]) { [_closeArr removeObject:string]; }else { [_closeArr addObject:string]; } //刷新 - 全部刷新 // [_tableView reloadData]; //刷新 - 只刷点击的那个section [_tableView reloadSections:[NSIndexSet indexSetWithIndex:btn.tag-100] withRowAnimation:UITableViewRowAnimationFade]; } @end