UI2_QQ折叠-UITableViewController

//  CustomUITableViewController.h

//  UI2_QQ折叠-UITableViewController

//

//  Created by zhangxueming on 15/7/15.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import <UIKit/UIKit.h>



@interface CustomUITableViewController : UITableViewController

{

    int sectionState[20];//标志分区的状态

}



//提供数据源

@property (nonatomic, retain)NSMutableArray *dataList;



@end

 

//

//  CustomUITableViewController.m

//  UI2_QQ折叠-UITableViewController

//

//  Created by zhangxueming on 15/7/15.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import "CustomUITableViewController.h"



#define FoldImageName @"arrow_fold"

#define SpreadImageName @"arrow_spread"



@interface CustomUITableViewController ()



@end



@implementation CustomUITableViewController



- (instancetype)initWithStyle:(UITableViewStyle)style

{

    self = [super initWithStyle:style];

    if (self) {

        self.title = @"QQ折叠";

        self.dataList = [NSMutableArray array];

    }

    return self;

}



- (void)creatData

{

    for (int i=0; i<20; i++) {

        NSMutableArray *array = [NSMutableArray array];

        for (int j=0; j<5; j++) {

            NSString *name = [NSString stringWithFormat:@"小明%d", j+1];

            [array addObject:name];

        }

        [_dataList addObject:array];

    }

}

//设置分区的个数

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return self.dataList.count;

}



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

{

    //根据分区的状态返回行数

    if (sectionState[section]) {

        return 0;

    }

    return [[self.dataList objectAtIndex:section] count];

}



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString *cellId = @"cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];

    if (!cell) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellId];

    }

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    cell.textLabel.text = [[self.dataList objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

    

    return cell;

}



//设置分区头视图



- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

{

    UIView *headerView = [[UIView alloc] initWithFrame:CGRectZero];

    headerView.backgroundColor = [UIColor lightGrayColor];

    UILabel *lineLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 43, self.view.frame.size.width, 3)];

    lineLabel.backgroundColor = [UIColor grayColor];

    [headerView addSubview:lineLabel];

    

    //加载图片

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 7, 32, 32)];

    if (sectionState[section]) {//收起的状态

        imageView.image = [UIImage imageNamed:FoldImageName];

    }

    else

    {

        imageView.image = [UIImage imageNamed:SpreadImageName];

    }

    [headerView addSubview:imageView];

    

    //添加点击手势

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];

    tap.numberOfTapsRequired  = 1;

    tap.numberOfTouchesRequired = 1;

    headerView.userInteractionEnabled = YES;

    [headerView addGestureRecognizer:tap];

    //tag值

    headerView.tag = section;

    

    return headerView;

}

//0000 0000  ==0

//0000 0001 ^

//-----------

//0000 0001  ==1



//0000 0001  ==1

//0000 0001 ^

//-----------

//0000 0000  ==0



- (void)tapClick:(UITapGestureRecognizer *)tap

{

    NSLog(@"-------");

    NSInteger index = tap.view.tag;

    sectionState[index] ^=1;

    [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:index] withRowAnimation:UITableViewRowAnimationFade];

}





- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

{

    return 46;

}



- (void)viewDidLoad {

    [super viewDidLoad];

    [self creatData];

}



- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}



@end

 

//  AppDelegate.m

//  UI2_QQ折叠-UITableViewController

//

//  Created by zhangxueming on 15/7/15.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import "AppDelegate.h"

#import "CustomUITableViewController.h"



@interface AppDelegate ()



@end



@implementation AppDelegate





- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.

    CustomUITableViewController *root = [[CustomUITableViewController alloc] init];

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root];

    self.window.rootViewController = nav;

    self.window.backgroundColor = [UIColor whiteColor];

    

    return YES;

}

 

你可能感兴趣的:(UITableView)