//// ViewController.m// xcjtest//// Created by ruicheng on 16/6/27.// Copyright © 2016年 ruicheng. All rights reserved.//#import "ViewController.h"@interface ViewController ()@property (nonatomic ,strong) UITableView *tableView;
/** headview 是 一个button */
@property (nonatomic, strong) NSMutableArray *btnArr;
/**各个section对应的cell里面的内容 是一个二维的数组*/
@property (nonatomic, strong) NSMutableArray *contentArr;
@end
@implementation ViewController
#pragma mark - 懒加载
- (NSMutableArray *)contentArr
{
if (!_contentArr) {
_contentArr = [[NSMutableArray alloc]init];
NSArray *arr1 = [[NSArray alloc]initWithObjects:@"121",@"123",@"124", nil];
for (int i = 0 ;i <=10; i ++) {
[_contentArr addObject:arr1];
}
}
return _contentArr;
}
- (NSMutableArray *)btnArr
{
if (!_btnArr) {
_btnArr = [[NSMutableArray alloc]init];
for(int i = 0; i <= 10;i++){
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 375, 80)];
btn.backgroundColor = [UIColor redColor];
btn.tag = i;
[self.btnArr addObject:btn];
[btn addTarget:self action:@selector(blick:) forControlEvents:UIControlEventTouchUpInside];
[btn setTitle:@"被选中" forState:UIControlStateSelected];
[btn setTitle:@"未选中" forState:UIControlStateNormal];
}
}
return _btnArr;
}
- (void)viewDidLoad {
[super viewDidLoad];
//初始化table
[self initTableView];
}
/**
* 初始化table
*/
- (void)initTableView
{
self.tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
[self.view addSubview:self.tableView];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.showsVerticalScrollIndicator = NO;
}
/**
* 按钮点击事件
*
* @param btn 被点击的按钮
*/
- (void)blick:(UIButton *)btn
{
//按钮的取反
btn.selected = !btn.selected;
//刷新指定的section
NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:btn.tag];
[self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];
}
#pragma mark - UITableViewDelegate
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
//最关键的地方,从btnArr里面取出section对应的button,判读是否被选中,被选中就是显示contentArr里面对应的内容,没有选中就显示0;
UIButton *btn = (UIButton *)self.btnArr[section];
return btn.selected ? [self.contentArr[section] count]: 0;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return self.btnArr.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *reusid = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reusid];
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reusid];
}
cell.textLabel.text = self.contentArr[indexPath.section][indexPath.row];
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 40;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return self.btnArr[section];
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc]init];
}
@end