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

#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)

时间: 2024-12-10 12:15:22

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

模仿京东顶部搜索条效果制作的一个小demo

最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 1 #define kScreenWidth [UIScreen mainScreen].bounds.size.width 2 #define kScreenHeight [UIScreen mainScreen].bounds.size.height 3 4 #import "mainViewController.h" 5 6 @interface mainViewController

jQuery模仿window7窗口弹出效果

原文:jQuery模仿window7窗口弹出效果 源代码下载地址:http://www.zuidaima.com/share/1595935788665856.htm 效果不错,分享下. 出处:http://www.jq-show.com/Detail.aspx?id=197 版权声明:本文为博主原创文章,未经博主允许不得转载.

css3 弹性效果上下翻转demo

最近扒了一个有弹性效果上下翻转demo 上图: 上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> @-webkit-keyframes show { 0% { transform:rotateX(180deg); opacity:0;

模仿去哪儿的磁贴效果

感觉去哪儿的页面做的非常不错,非常好看,于是想模仿一下,其实实现还是很简单的,就是按下去的执行缩小动画,抬起的恢复正常状态,这种效果叫磁贴效果,顾名思义感觉就磁贴一样.下面我们来看看效果图: 下面我们来看看最重要的自定义代码: package com.zqy.qunertext; import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import andr

iOS分组通讯录效果+側滑菜单(MMDrawerController)

前言的废话-能够忽略 自从学会了使用Cocoapod,就欲罢不能了!由于太简单太赞了,不用再把源代码粘到project里了! 參见戴维营博客中的解说:Cocoapod 安装以及使用 先上一下效果图,请原谅我手残录的效果不是非常理想,大致就是这个意思 接下来上代码! 1.通讯录 通讯录基本的就是建立索引栏和section的关联,其次是初始化索引栏数据和每一个section的title.关于索引栏数据,假设写接口的小哥人好的话就会直接帮你返回ABCD-假设非常不幸,接口小哥不给你返回索引栏数据,那就

一个模仿探探头像编辑效果解析

此前一直在做模仿一个探探头像编辑的效果,但是水平不够一直没做出来,最后看到了丶亲一口就跑的源码 (http://www.apkbus.com/forum.php?mod=viewthread&tid=255164&highlight=%E6%8E%A2%E6%8E%A2 ),恍然醒悟,对我的一些知识有全面提升.我觉得最主要的这个 AnimatorSet 不了解,当时一直在思考如何将多个动画同时执行在我的知识里就一个AnimationSet这个动画集合,但是做不到同时播放.因此没有做出这个效

Android弹幕功能实现,模仿斗鱼直播的弹幕效果

转载请注明出处:http://blog.csdn.net/sinyu890807/article/details/51933728 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新. 大家好,感觉好像已经很久没更新博客了.前段时间主要是忙于新书的事情,时间比较紧张.而现在新书已经完稿,剩下的事情就都是出版社的工作了,那么我又可以抽出时间来写写博客了. 记得之前有位朋友在我的公众号里问过我,像直播的那种弹幕功能该如何实现?如今直播行业确实是非常火爆

android PopupWindow嵌套ListView(模仿分类下拉菜单效果)

先看下UI效果 这就是使用PopupWindow嵌套ListView实现的,这个简单,不做多介绍直接上代码 1:布局文件 <span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" and

模仿京东楼层跳转效果,附注释

<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript" src="js/jquery-3.1.1.min.js" ></script> <style type="text/css"&