//直接代码 只包含 折叠展开字典的处理搭建
#import "CFViewController.h"
@interface CFViewController ()<UITableViewDelegate,UITableViewDataSource>
{
UITableView *CFTableView;
//数据
NSArray * CFOnearray;
NSMutableArray *CFArray;
NSArray *CFDetailArray;
CGFloat HeightNormal;
NSArray *arrayTitle;//
NSArray * arraymodeltext;//内部分组Title
CGFloat height0;//返回的高度
//按钮的状态相关
NSMutableDictionary * stateDict;//保存状态字典
}
@end
//chufang
@implementation CFViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self SetCustomBarWithLeftImage:@"ic_return" leftBtnString:nil titleText:@"处方" rightImageName:nil rightBtnSring:nil target:self];
[self loadData];
}
-(void)loadData{
HeightNormal = IPHONEHIGHT(70);
CFArray = [NSMutableArray array];
//包含状态的字典。 值为1 是展开状态 0收缩,,,以section为键
stateDict = [[NSMutableDictionary alloc]init];
arrayTitle = @[@"号: ",@"添加时间: ",@"诊: ",@"明细: ",@"金额: ",@"开: "];
[[GetUrlSession shareUrlconnection]connetion:[NSString stringWithFormat:@"%@?org_code=%@&clinic_id=%@",CFUrlStr,_jzmodel.org_code,_jzmodel.clinic_id] Haget:^(NSDictionary *data, NSError *error, NSHTTPURLResponse *response) {
//CFOnearray 时下载的数据。如果为空了。就不搭建UI
if (CFOnearray.count>0) {
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
[self creatUI];
});
}else{
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
[self CreatNilUI];
});
}
}];
}
-(void)creatUI{
//创建tableView
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return CFOnearray.count;
}
//每一组 返回的行数。通过判断字典进行 看是否要展开
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSString * sectionNum = [NSString stringWithFormat:@"%ld",section];
NSString* state = [stateDict objectForKey:sectionNum];
if ([state isEqualToString:@"1"]) {
return 6;
}else{
return 0;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
return cell;
}
//在透视图上添加一个button。进行监听点击事件
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIButton *backView = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, IPHONEHIGHT(88))];
CFModel * model = CFOnearray[section];
backView.tag = 100+section;
[backView addTarget: self action:@selector(tapDown:) forControlEvents:UIControlEventTouchUpInside];
backView.backgroundColor = [UIColor whiteColor];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(IPHONEWIDTH(28), IPHONEHIGHT(28),ScreenWidth- IPHONEWIDTH(100), IPHONEHIGHT(30))];
label.font = [UIFont systemFontOfSize:IPHONEWIDTH(30)];
label.textColor = shense;
//组头大名字设定
label.text = [NSString stringWithFormat:@"%@(%@)",model.diagnosis,dateSring];
[backView addSubview:label];
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(IPHONEWIDTH(667), IPHONEHIGHT(34), IPHONEWIDTH(27), IPHONEHIGHT(20))];
btn.tag = 1001+section;
/////////////////////////判断是否展开折叠 改变button的状态
NSString * sectionNum = [NSString stringWithFormat:@"%ld",section];
NSString* state = [stateDict objectForKey:sectionNum];
if ([state isEqualToString:@"1"]) {
btn.selected = YES;
}else{
btn.selected = NO;
}
[btn setImage:[UIImage imageNamed:@"ic_home_hospital_close"] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:@"ic_home_hospital_open"] forState:UIControlStateSelected];
[backView addSubview:btn];
//线
UIView *grayView = [[UIView alloc]initWithFrame:CGRectMake(0, backView.bottom-1, ScreenWidth, 1)];
grayView.backgroundColor = [UIColor colorWithHexString:@"f2f2f2"];
[backView addSubview:grayView];
return backView ;
}
//触发方法 改变字典的值
-(void)tapDown:(UIButton *)sender{
NSString * section = [NSString stringWithFormat:@"%ld",sender.tag-100];
NSString* state = [stateDict objectForKey:section];
if ([state isEqualToString:@"1"]) {
state = @"0";
[stateDict setObject:state forKey:section];
}else{
state = @"1";
[stateDict setObject:state forKey:section];
}
[CFTableView reloadData];
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return IPHONEHIGHT(88);
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 66;
}
//cell线到左边
-(void)viewDidLayoutSubviews {
if ([CFTableView respondsToSelector:@selector(setSeparatorInset:)]) {
[CFTableView setSeparatorInset:UIEdgeInsetsZero];
}
if ([CFTableView respondsToSelector:@selector(setLayoutMargins:)]) {
[CFTableView setLayoutMargins:UIEdgeInsetsZero];
}
}
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPat{
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setSeparatorInset:)]){
[cell setSeparatorInset:UIEdgeInsetsZero];
}
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end