码迷,mamicode.com
首页 > 其他好文 > 详细

模仿聊天窗口的分组的效果(粗糙的Demo)

时间:2014-08-18 18:21:02      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   strong   文件   数据   for   

#import "AViewController.h"

#define max 8888888888
@interface AViewController ()<UITableViewDelegate,UITableViewDataSource>

@property (nonatomic,strong)UITableView *myTabView;
@property (nonatomic,strong)NSArray     *dataArray;
@property (nonatomic,assign)NSInteger   rowNumber;
@property (nonatomic,assign)NSInteger   sectionNumber;
@end

@implementation AViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        self.rowNumber = 0;
        self.sectionNumber=max;
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self.view addSubview:self.myTabView];
    
}

-(UITableView *)myTabView
{
    if (!_myTabView) {
        CGRect rect = self.view.bounds;
        rect.origin.y=20;
        rect.size.height=rect.size.height-rect.origin.y;
        _myTabView = [[UITableView alloc]initWithFrame:rect style:UITableViewStylePlain];
        _myTabView.delegate = self;
        _myTabView.dataSource = self;
    }
    return _myTabView;
}
-(NSArray*)dataArray
{
    if (!_dataArray) {
        self.dataArray = @[@{@"array": @[@"11",@"12",@"13",@"14",@"15"],@"name":@"one"},
                           @{@"array": @[@"21",@"22",@"23",@"24",@"25"],@"name":@"two"},
                           @{@"array": @[@"31",@"32",@"33",@"34",@"35"],@"name":@"three"},
                           @{@"array": @[@"41",@"42",@"43",@"44",@"45"],@"name":@"four"},
                           @{@"array": @[@"51",@"52",@"53",@"54",@"55"],@"name":@"five"}];
    }
    return _dataArray;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.dataArray.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
{
    if (_sectionNumber!=max) {
        if (section==_sectionNumber) {
            return 1+_rowNumber;
        }
        return 1;
    }else{
        return 1;
    }
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *indexCell = @"groupCell";
    UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:indexCell];
    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:indexCell];
    }
    if (indexPath.row==0) {
        cell.textLabel.text = self. dataArray[indexPath.section][@"name"];
    }else{
        cell.textLabel.text = self.dataArray[indexPath.section][@"array"][indexPath.row-1];
    }
    return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger number =[self.dataArray[indexPath.section][@"array"]  count];
        if (indexPath.row==0) {
            if(_sectionNumber == max){
                _sectionNumber =indexPath.section;
                [self addCellwithNumber:number];
            }else if (_sectionNumber==indexPath.section) {
                [self removeCellwithNumber:number];
                _sectionNumber =max;
            }else{
                [self removeCellwithNumber:number];
                _sectionNumber = indexPath.section;
                [self addCellwithNumber:number];
            }
            
        }
}

-(void)removeCellwithNumber:(NSInteger)number
{
    for (int i=(int)number; i>=1; i--) {
        --_rowNumber;
        [self.myTabView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:i inSection:_sectionNumber]] withRowAnimation:UITableViewRowAnimationTop];
    }

}
-(void)addCellwithNumber:(NSInteger)number
{
    for (int i=1; i<=number; i++) {
        ++_rowNumber;
        [self.myTabView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:i inSection:_sectionNumber]] withRowAnimation:UITableViewRowAnimationTop];
    }
}
@end

.h文件里啥都木有,就不贴了。

其实关于这个,没什么好说的,就是要注意折腾一个问题,在改变tableView的数据时的问题,数据变化一定要与试图对应,否则,各种蹦蹦蹦。

 

模仿聊天窗口的分组的效果(粗糙的Demo),布布扣,bubuko.com

模仿聊天窗口的分组的效果(粗糙的Demo)

标签:style   blog   color   io   strong   文件   数据   for   

原文地址:http://www.cnblogs.com/lingzhiguiji/p/3919964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!