使用TableView进行分组

来源:互联网 发布:apache实现负载均衡 编辑:程序博客网 时间:2024/05/19 18:41

这里写图片描述

#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
原创粉丝点击