首页 » 技术分享 » 仿QQ分组列表(UITableView)

仿QQ分组列表(UITableView)

 
//
//  ViewController.m
//  仿QQ分组列表
//
//  Created by lanqs on 15/1/26.
//  Copyright (c) 2015年 Tanqihong. All rights reserved.
//

#import "ViewController.h"

/*网上的那些代码,太麻烦,也有点老了,自己写了一个,以后有遗忘可以回来看*/

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>

@property(nonatomic,strong)UITableView *tableView;    //就是一个UItableView
@property(nonatomic,strong)NSMutableArray *dataSource;//存数据的,测试,没有用
@property(nonatomic,assign)NSInteger index;           //返回的标题栏下标
@property(nonatomic,assign)BOOL sectionNotShow;       //标题栏没有打开
@property(nonatomic,assign)NSInteger buttonPressedTag;//用来等于button的tag值的属性

- (void)initDataSource;
- (void)initUserInterface;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self initDataSource];
    [self initUserInterface];
}

- (void)initDataSource {
    _dataSource = [[NSMutableArray alloc]init];
    _index = -1;            //初始化为 -1 ,不然会显示第一行,影响用户体验
    _sectionNotShow = YES;  //初始化为真
}

- (void)initUserInterface {
    self.view.backgroundColor = [UIColor whiteColor];
    
    _tableView = [[UITableView alloc]initWithFrame:self.view.bounds];
    _tableView.dataSource = self;
    _tableView.delegate = self;
    [self.view addSubview:_tableView];
}

#pragma mark - <UITableViewDataSource>

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

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    return @"-_-||";
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        //显示的组的下标等于点击button的tag值减去100后的下标
        if (section == _index) {
            return 5;
        }else {
            return 0;
        }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellID = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    }
    cell.textLabel.text = @"cell";
    return cell;
}

#pragma mark - <UITableViewDelegate>

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0, 0, 100, 30);
    button.tag = 100 + section;
    [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
    button.layer.borderWidth = 1;
    button.backgroundColor = [UIColor redColor];
    
    return button;
}
#pragma mark - buttonPressed
- (void)buttonPressed:(UIButton *)sender {
    
    _sectionNotShow = !_sectionNotShow; //显示(关闭)组
    self.index = sender.tag - 100;      //将下标置为点击的下标
    if (self.buttonPressedTag != sender.tag - 100) { //上次点击和这个点击不是同一个button
        self.buttonPressedTag = sender.tag - 100;    //点击等于这次点击的button
        _sectionNotShow = NO;                        //显示组
    }else {                                          //上次点击和这次点击相同
        if (_sectionNotShow) {                       //如果不显示组
            self.index = -1;                         //执行不显示组,将下标置为-1
        }else {                                      //如果显示组
            self.index = sender.tag - 100;           //执行限制组,将下标置为点击的下标
        }
    }
    [_tableView reloadData];                         //刷新UITableView
}

@end

Demo连接:http://download.csdn.net/detail/u011032334/8398921 

转载自原文链接, 如需删除请联系管理员。

原文链接:仿QQ分组列表(UITableView),转载请注明来源!

0