代码改变世界

ios中tableview侧栏的折叠

2013-07-15 14:36  甘超波  阅读(2902)  评论(0编辑  收藏  举报
#import "ViewController.h"
#define Ksmall 40.0f
#define Klarge 80.0f
#define KNoOpen @"NoOpen"



@interface ViewController (){
    int flag;
}
@property(nonatomic,retain)NSMutableDictionary *mydata;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.mydata=[NSMutableDictionary dictionary];
    UITableView *tableview=[[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
    tableview.delegate=self;
    tableview.dataSource=self;
    [self.view addSubview:tableview];
    [tableview release];
    // Do any additional setup after loading the view, typically from a nib.
}

//section
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 5;
}

//row
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 2;
}



-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    NSLog(@"section--》%zi----row--->%zi",indexPath.section,indexPath.row);
    static NSString *cellindentify=@"mycell";
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellindentify];
    if(cell==nil){
        cell=[[[UITableViewCell alloc] init] autorelease];  
    }
    cell.textLabel.text=@"bb";
    return cell;
}

#pragma mark -自定义分组的头部
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return 40;
}
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    NSLog(@"viewForHeaderInSection");
    UIView *view=[[[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 40)] autorelease];
    UILabel *lb=[[UILabel alloc] initWithFrame:CGRectMake(10, 0, 100-10, 40)];
    lb.text=@"time";
   
    lb.textAlignment=NSTextAlignmentLeft;
    [view addSubview:lb];
    
    UILabel *lb1=[[UILabel alloc] initWithFrame:CGRectMake(100, 0, self.view.bounds.size.width-100-10, view.bounds.size.height)];
    lb1.textAlignment=NSTextAlignmentRight;
    lb1.text=@"right";
    [view addSubview:lb1];
    return view;
}

#pragma mark -设置CELL的高度
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
   if(indexPath.row==0){
        UITableViewCell *targetCell=[tableView cellForRowAtIndexPath:indexPath];
       if(targetCell.frame.size.height==Ksmall+1){//折叠的情况
           [self.mydata setObject:KNoOpen forKey:indexPath];
       }
        else{
            [self.mydata removeObjectForKey:indexPath];
        }
     [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
   }
}


-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    
    if(indexPath.row==0){
       NSString *isOpen= [self.mydata objectForKey:indexPath];
        if ([isOpen isEqualToString:KNoOpen]) {
            return Klarge;
        }
        return Ksmall;
    }
    else
        return Klarge;
}



- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}