使用TableView进行分组

这里写图片描述

#import "ViewController.h"

#define WIDTH [UIScreen mainScreen].bounds.size.width
#define HEIGHT [UIScreen mainScreen].bounds.size.height

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>

@property (nonatomic, strong) NSMutableArray *dataArray;
@property (nonatomic, strong) NSMutableArray *stateArray;
@property (nonatomic, strong) NSMutableArray *sectionArray;
@property (nonatomic, strong) UITableView *tableView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"使用TableView进行分组";

    [self initDataSource];

    [self initTable];
}

/**
 *  初始化选择行业
 */
- (void)initDataSource
{
    _sectionArray  = [NSMutableArray arrayWithObjects:@"----分组1----",@"----分组2----",@"----分组3----",@"----分组4----",@"----分组5----",nil];

    NSArray *one = @[@"1.1",@"1.2",@"1.3",@"1.4",@"1.5",@"1.6"];
    NSArray *two = @[@"2.1",@"2.2",@"2.3",@"2.4",@"2.5"];
    NSArray *three = @[@"3.1",@"3.2",@"3.3",@"3.4",@"3.5",@"3.6",@"3.7"];
    NSArray *four = @[@"4.1",@"4.2",@"4.3",@"4.4"];
    NSArray *five = @[@"5.1",@"5.2",@"5.3"];

    _dataArray = [NSMutableArray arrayWithObjects:one,two,three,four,five, nil];
    _stateArray = [NSMutableArray array];

    for (int i = 0; i < _dataArray.count; i++)
    {
        //所有的分区都是闭合
        [_stateArray addObject:@"0"];
    }
}

/**
 *  初始化TableView
 */
- (void)initTable{
    _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 20, WIDTH, HEIGHT) style:UITableViewStylePlain];
    _tableView.delegate = self;
    _tableView.dataSource = self;
    _tableView.tableFooterView = [UIView new];
    [self.view addSubview:_tableView];
}

#pragma mark - UITableViewDataSource UITableViewDelegate
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return _sectionArray.count;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    if ([_stateArray[section] isEqualToString:@"1"]){
        //如果是展开状态
        NSArray *array = [_dataArray objectAtIndex:section];
        return array.count;
    }else{
        //如果是闭合,返回0
        return 0;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellID = @"cellID";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    }

    cell.textLabel.text = _dataArray[indexPath.section][indexPath.row];
    cell.backgroundColor = [UIColor whiteColor];
    cell.selectionStyle = UITableViewCellAccessoryNone;
    //    cell.tag =  _dataArray[indexPath.section][indexPath.row];
    cell.tag = indexPath.row;
    return cell;
}

/**
 *  设置section的title
 */
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return _sectionArray[section];
}

/**
 *  设置头标题的样式,我这里是手写了一个button,在button上放的图片,文字.可以用别的方式
 */
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
    [button setTag:section+1];
    button.backgroundColor = [UIColor whiteColor];
    [button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchUpInside];
    [tableView addSubview:button];

    UILabel *tlabel = [[UILabel alloc]initWithFrame:CGRectMake( 10, (44-20)/2, 200, 20)];
    [tlabel setBackgroundColor:[UIColor clearColor]];
    [tlabel setFont:[UIFont systemFontOfSize:16]];
    [tlabel setText:_sectionArray[section]];
    [button addSubview:tlabel];
    return button;
}

/**
 *  headButton点击
 */
- (void)buttonPress:(UIButton *)sender
{
    //判断状态值
    if ([_stateArray[sender.tag - 1] isEqualToString:@"1"]){
        //修改
        [_stateArray replaceObjectAtIndex:sender.tag - 1 withObject:@"0"];
    }else{
        [_stateArray replaceObjectAtIndex:sender.tag - 1 withObject:@"1"];
    }
    [_tableView reloadSections:[NSIndexSet indexSetWithIndex:sender.tag - 1] withRowAnimation:UITableViewRowAnimationAutomatic];

}

/**
 *  返回section的高度
 */
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 44;
}
@end
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值