模仿QQ好友列表,点击分组会打开具体的联系人,代码简单易懂,为菜鸟服务

////  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

你可能感兴趣的:(模仿QQ好友列表,点击分组会打开具体的联系人,代码简单易懂,为菜鸟服务)