美文网首页
关于TableView的点击收起和展开

关于TableView的点击收起和展开

作者: 这位网友 | 来源:发表于2016-07-20 10:10 被阅读236次

    本文是一个关于简单的完成TableView段头点击能展开和收起功能的Demo

    ViewController.m中如下:

    #import "ViewController.h"
    
    #define UIScreen_Width ([UIScreen mainScreen].bounds.size.width)
    #define UIScreen_height ([UIScreen mainScreen].bounds.size.height)
    
    @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>{
        UITableView* _tableView;
        NSMutableArray *openArray;
    }
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        openArray = [[NSMutableArray alloc] init];
        NSNumber* num = [NSNumber numberWithBool:YES];
        //有几个section就要存几个openArray,在项目中就要注意这个openArray是根据后台数据获得的
        [openArray addObject:num];
        [openArray addObject:num];
    
        
        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 64, UIScreen_Width, UIScreen_height) style:UITableViewStylePlain];
        _tableView.delegate = self;
        _tableView.dataSource = self;
        [self.view addSubview:_tableView];
    }
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
        return openArray.count;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        if ([[openArray objectAtIndex:section] boolValue]  == NO) {
            return 0;
        }
        return 10;
    }
    
    - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
        UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"ID"];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"ID"];
        }
        
        cell.textLabel.text = [NSString stringWithFormat:@"好友%ld",indexPath.row];
        
        return cell;
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
        return 35;
    }
    
    - (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
        UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake(0, 0, UIScreen_Width, 35);
        button.tag = section;
        [button setBackgroundColor:[UIColor blueColor]];
        [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
        
        return button;
    }
    
    - (void)buttonClick:(UIButton*)button{
        BOOL isOpen = [[openArray objectAtIndex:button.tag] boolValue];
        if (isOpen == YES) {
            NSNumber* num = [NSNumber numberWithBool:NO];
            [openArray replaceObjectAtIndex:button.tag withObject:num];
        } else {
            NSNumber* num = [NSNumber numberWithBool:YES];
            [openArray replaceObjectAtIndex:button.tag withObject:num];
        }
        
        [_tableView reloadSections:[NSIndexSet indexSetWithIndex:button.tag] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
    
    @end
    
    

    相关文章

      网友评论

          本文标题:关于TableView的点击收起和展开

          本文链接:https://www.haomeiwen.com/subject/cbrvjttx.html