美文网首页
模仿QQ好友列表,点击分组会打开具体的联系人,代码简单易懂,为菜

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

作者: 会飞的乌龟爱看海 | 来源:发表于2016-06-27 10:58 被阅读337次

    ////  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好友列表,点击分组会打开具体的联系人,代码简单易懂,为菜

          本文链接:https://www.haomeiwen.com/subject/ndyzdttx.html