之前在网上看到过这种的,都是封装的或者是用的第三方,这是自己写的,有兴趣大家也可以把他封装起来留着自己用;
#import“ViewController.h”
#define WIDTH [UIScreen mainScreen] .bounds.size.width
#define HEIGHT [UIScreen mainScreen] .bounds.size.height
@interfaceViewController()
@property(nonatomic,strong)NSMutableArray* dataArray;
@property(nonatomic,strong)NSMutableArray* stateArray;
@property(nonatomic,strong)NSMutableArray* sectionArray;
@property(nonatomic,strong)UITableView* tableView;
@结束
@implementationViewController
- (void)viewDidLoad {
[superviewDidLoad];
自我。title=@“TableView的点击展开显示”;
[selfinitDataSource];
[selfinitTable];
}
/ **
*初始化选择行业
* /
- (void)initDataSource
{
_sectionArray= [NSMutableArrayarrayWithObjects:@“计算机/互联网/通信”,
@ “生产/工艺/制造”,
@ “商业/服务业/个体经营”,
@ “金融/银行/投资/保险”,
@“文化/广告/传媒”,
@“娱乐/艺术/表演”,
@ “医疗/护理/制药”,
@ “律师/法务”,
@“教育/培训”,
@“学生”,nil];
的NSArray*一个=@ [@ “工程狮”@“程序猿”@“ UI设计师”@“运营人员”@“产品经理”@“策划师”@“市场拓展”,@ “网站编辑”,@“其他”];
NSArray的* 2 =@ [@ “管理层”@“技术员”@“检验员”@“质检员”@“就是个工人”@“小组长”@“车间主任”,@ “其他”];
NSArray的* 3 =@ [@ “服务员”@“收银员”@“会计”@“文秘”@“保安大哥”@“销售经理”@“造型师”@“厨师”,@“采购员”,@“业务经理”,“个人户”,“”其他“];
NSArray的* 4 =@ [@”证券分析师“@”操盘手“@”客户经理“@”保险经纪“@”银行职员“@”投资经理“@”理财顾问“@”保险精算师“,@”其他“];
的NSArray* 5 =@ [@ “作家”@“设计师”@“广告策划”@“主持人”@“编导”@“记者”@“制片人”@“导演”,@“草根写手”,@“其他”];
的NSArray* 6 =@ [@ “歌手”@“模特”@“导演”@“经纪人”@“编剧”@“摄影师”@“音乐人”@“制作人”,@“艺术家”,@“其实我是一个演员”,@“其他”];
NSArray的* 7个可=@@”主治医师“@”营养师“@”护士“@”护工“@”美容师“@”医药代表“@”医务工作者“@”药剂师“,@”其他“];
NSArray的* 8 =@ [@ “公务员”@“律师”@“警察”@“法官”@“政府工作人员”@“军人”@“其他”];
的NSArray* 9 =@ [@ “幼教”@“教师”@“教授”@“户外拓展”@“讲师”@“教练”@“其他”];
的NSArray* 10 =@ [@ “中学生”@“大学生”@“研究生”@“博士生”@“留学生”];
_dataArray= [NSMutableArrayarrayWithObjects:一,二,三,四,五,六,七,八,九,十,零];
_stateArray= [NSMutableArrayarray];
对于(诠释I =0;我<_dataArray。计数;我++)
{
//所有的分区都是闭合
[_stateArrayaddObject:@“0”];
}
}
/ **
*初始化的TableView
* /
- (void)initTable {
_tableView= [[UITableView中的alloc]initWithFrame:CGRectMake(0,0,WIDTH,HEIGHT)式:UITableViewStylePlain];
_tableView。委派=自我;
_tableView。dataSource=self;
_tableView。tableFooterView= [UIViewnew];
[自我。查看addSubview:_tableView];
}
#pragma mark - UITableViewDataSource UITableViewDelegate
- (NSInteger)numberOfSectionsInTableView :(UITableView*)tableView
{
返回_sectionArray。数;
}
- (NSInteger)tableView :(UITableView*)tableView numberOfRowsInSection :(NSInteger)部分
{
if([_stateArray[section]isEqualToString:@“1”]){
//如果是展开状态
NSArray* array = [_dataArrayobjectAtIndex:section];
返回数组。数;
}else{
//如果是闭合,返回0
返回0;
}
}
- (UITableViewCell*)tableView :(UITableView*)tableView cellForRowAtIndexPath :(NSIndexPath*)indexPath
{
静态NSString* cellID =@“cellID”;
UITableViewCell* cell = [tableViewdequeueReusableCellWithIdentifier:cellID];
if(cell ==nil){
cell = [[UITableViewCellalloc]initWithStyle:(UITableViewCellStyleSubtitle)reuseIdentifier:cellID];
}
细胞。textLabel。text=_dataArray[indexPath。section] [indexPath]行];
细胞。backgroundColor= [UIColorwhiteColor];
细胞。selectionStyle=UITableViewCellAccessoryNone;
// cell.tag = _dataArray [indexPath.section] [indexPath.row];
细胞。tag= indexPath。行;
返回单元格
}
/ **
*设置部分的标题
* /
- (NSString*)tableView :(UITableView*)tableView titleForHeaderInSection :(NSInteger)部分
{
return_sectionArray[section];
}
/ **
*设置头标题的样式,我这里是手写了一个按钮,在按钮上放的图片,文字。可以用别的方式
* /
- (UIView*)tableView :(UITableView*)tableView viewForHeaderInSection :(NSInteger)部分
{
UIButton* button = [UIButtonbuttonWithType:UIButtonTypeCustom];
[按钮SETFRAME:CGRectMake(0,0,自我。视图。帧。大小。宽度,44)];
[buttonsetTag:section +1];
按钮。backgroundColor= [UIColorwhiteColor];
[buttonsetTitleColor:[UIColorgrayColor]forState:UIControlStateNormal];
[按钮setTitleEdgeInsets:UIEdgeInsetsMake(0,0,0,60)];
[buttonaddTarget:selfaction:@selector(buttonPress :)forControlEvents:UIControlEventTouchUpInside];
的UIImageView*线= [[的UIImageView的alloc]initWithFrame:CGRectMake(0,按钮帧。大小。高度-1,按钮帧。大小。宽度,1)];
[linesetImage:[UIImageimageNamed:@“case_cell_Line”]];
[buttonaddSubview:line];
的UIImageView* imgView = [[的UIImageView的alloc]initWithFrame:CGRectMake(10,(44-22)/2,22,22)];
[imgViewsetImage:[UIImageimageNamed:[NSStringstringWithFormat:@“icon-%ld”,section +1]]];
[buttonaddSubview:imgView];
的UIImageView* _imgView = [[的UIImageView的alloc]initWithFrame:CGRectMake(自我。视图。帧。大小。宽度-30,(44-6)/2,10,6)];
if([_stateArray[section]isEqualToString:@“0”]){
_imgView。image= [UIImageimageNamed:@“icon-sjt”];
}elseif([_stateArray[section]isEqualToString:@“1”]){
_imgView。image= [UIImageimageNamed:@“icon-xjt”];
}
[buttonaddSubview:_imgView];
的UILabel*的TLabel = [[的UILabel的alloc]initWithFrame:CGRectMake(40,(44-20)/2,200,20)];
[tlabelsetBackgroundColor:[UIColorclearColor]];
[tlabelsetFont:[UIFontsystemFontOfSize:16]];
[tlabelsetText:_sectionArray[section]];
[buttonaddSubview:tlabel];
返回按钮;
}
/ **
* headButton点击
* /
- (void)buttonPress :(UIButton*)发件人
{
//判断状态值
如果([_stateArray[发送端。标签-1]isEqualToString:@ “1”]){
//修改
[_stateArrayreplaceObjectAtIndex:sender。标签-1withObject:@“0”];
}else{
[_stateArrayreplaceObjectAtIndex:sender。标签-1withObject:@“1”];
}
[_tableViewreloadSections:[NSIndexSetindexSetWithIndex:sender。标签-1]withRowAnimation:UITableViewRowAnimationAutomatic];
}
/ **
*返回部分的高度
* /
- (CGFloat)tableView :(UITableView*)tableView heightForHeaderInSection :(NSInteger)部分
{
返回44;
}
@结束