////? 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對應(yīng)的cell里面的內(nèi)容 是一個二維的數(shù)組*/
@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{
//最關(guān)鍵的地方猜欺,從btnArr里面取出section對應(yīng)的button,判讀是否被選中拷窜,被選中就是顯示contentArr里面對應(yīng)的內(nèi)容开皿,沒有選中就顯示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