iOS 实现QQ界面
应师傅要求编写个QQ界面来不吝赐教下我的代码问题。
编写个QQ界面。有三个组,每一个组有人。并显示在线不在线。
先看一下效果图
这里省了事由于我的图片仅仅用了一张。假设要依据人的不同设置,仅仅要在cell里面改一下即可了;
主要是实现点击上面分组展开内容,再点击收回去。
废话不多说,上菜:
我们先来构造数据:
NSArray * InitArray =@[
@{
@"Name":@"朋友",
@"Group":@"YES",
@"Child":@[
@{@"Name":@"张三",
@"State":@"在线",},
@{@"Name":@"王五",
@"State":@"离开"}
]
},
@{
@"Name":@"家人",
@"Group":@"YES",
@"Child":@[@{@"Name":@"姐姐",
@"State":@"在线"},
@{@"Name":@"妹妹",
@"State":@"在线"},
@{@"Name":@"哥哥",
@"State":@"离开"},
@{@"Name":@"弟弟",
@"State":@"离开"}]
},
@{
@"Name":@"陌生人",
@"Group":@"YES",
@"Child":@[
@{@"Name":@"小王",
@"State":@"在线"},
@{@"Name":@"小李",
@"State":@"离开"},
@{@"Name":@"小红",
@"State":@"离开"}] }
];
设置一个数组属性 来接受数据;
@property (nonatomic,copy) NSMutableArray * CellArray;
好了,我们来利用数据构造界面吧;
界面非常easy:
一个图片是自己的头像;
一个是自己的网名
一个在线状态
以下就是一个表格(tableview)
@interface ViewController ()
{
UITableView * TableV;
} @end
设置一个tableview ;
往里面放:
UIImageView *IconImageV = [[UIImageView alloc]initWithFrame:CGRectMake(15, 30, 60, 60)];
IconImageV.image = [UIImage imageNamed:@"icon.png"];
[self.view addSubview:IconImageV];
UILabel *NameLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 30, 100, 30)];
NameLabel.text = @"雪松";
NameLabel.textAlignment = 1;//设置文字的对其方式 居中
[self.view addSubview:NameLabel];
UILabel *StateLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 60, 100, 30)];
StateLabel.text = @"在线";
NameLabel.textAlignment = 1;
[self.view addSubview:StateLabel]; TableV = [[UITableView alloc]initWithFrame:CGRectMake(15, 100, 290, 350)];
TableV.delegate = self;
TableV.dataSource = self;
TableV.separatorStyle=0;
TableV.backgroundColor =[UIColor yellowColor];
[self.view addSubview:TableV];
然后就是我们来构造table了
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ UITableViewCell *cell ;
NSDictionary * dectionary = [_CellArray objectAtIndex:indexPath.row];
if([dectionary objectForKey:@"Group"])
{
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"Group"];
cell.textLabel.text = [dectionary objectForKey:@"Name"];
cell.textLabel.textAlignment=0;
cell.backgroundColor = [UIColor grayColor];
cell.tag = 1;
}
else
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Child"];
cell.imageView.image = [UIImage imageNamed: @"icon.png"];
cell.textLabel.text = [dectionary objectForKey:@"Name"];
cell.detailTextLabel.text = [dectionary objectForKey:@"State"];
}
return cell; }
这里我想说一下。这个tag 。我想了非常半天,怎样用来记录这个分组是打开的还是折叠的呢。没有办法,最后想到了tag 用tag=1表示折叠的。=2表示是打开的;
以下最难的就是,折叠打开的方式了。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableDictionary * dictionary = [NSMutableDictionary dictionaryWithDictionary:[_CellArray objectAtIndex:indexPath.row]]; UITableViewCell *cell = [TableV cellForRowAtIndexPath:indexPath];
NSLog(@"%@",cell.textLabel.text);
if([dictionary objectForKey:@"Group"])
{
NSArray *ChildArray = [dictionary objectForKey:@"Child"];
NSMutableArray *PathArray = [NSMutableArray array]; if(cell.tag==1)
{
cell.tag=2;
for (int i =0 ;i<ChildArray.count;i++)
{
dictionary = [ChildArray objectAtIndex:i];
[_CellArray insertObject:dictionary atIndex:i+indexPath.row+1];
NSIndexPath *path = [NSIndexPath indexPathForRow:i+indexPath.row+1 inSection:0];
[PathArray addObject:path];
}
[TableV insertRowsAtIndexPaths:PathArray withRowAnimation:UITableViewRowAnimationAutomatic];
}
else
{
cell.tag=1;
NSMutableIndexSet * deleteSet= [NSMutableIndexSet indexSet];
for (NSDictionary *dic in ChildArray)
{
NSInteger row= [_CellArray indexOfObject:dic];
NSIndexPath * Path = [NSIndexPath indexPathForRow:row inSection:0];
[PathArray addObject:Path];
[deleteSet addIndex:row];
}
[_CellArray removeObjectsAtIndexes:deleteSet];
[TableV deleteRowsAtIndexPaths:PathArray withRowAnimation:UITableViewRowAnimationBottom];
}
} }
上面是详细的方式。假设看不懂,那就去看我的另外一篇博客http://blog.csdn.net/u010123208/article/details/38176943
好了。QQ界面的源代码在
http://download.csdn.net/detail/u010123208/7774851
欢迎下载
iOS 实现QQ界面的更多相关文章
- Unity iOS混合开发界面切换思路
Unity iOS混合开发界面切换思路 最近有很多博友QQ 私信 或则 留言联系我,请教iOS和Unity界面之前相互切换的问题,源代码就不私下发你们了,界面跳转功能的代码我直接贴到下面好了,顺带说i ...
- 手把手教你修改iOS版QQ的运动步数
手把手教你修改iOS版QQ的运动步数 现在很多软件都加上了运动模块,比如QQ和微信,而且还有排行榜,可以和好友比较谁的运动步数多,任何东西只要添加了比较功能,就变得不一样了.今天教大家用代码去修改QQ ...
- 【新手--android日记】实现IOS风格电话界面
[前言--新手日记] 开始学习android开发,通过做一个通讯录练习,打算实现各种自己想实现的功能. 新手作品,技术含量很浅.主要是记录自己的学习过程. 纯学习之用,求评论,求建议,求教导. [正题 ...
- iOS开发 QQ粘性动画效果
QQ(iOS)客户端的粘性动画效果 时间 2016-02-17 16:50:00 博客园精华区 原文 http://www.cnblogs.com/ziyi--caolu/p/5195615.ht ...
- swift:用UITabBarController、UINavigationController、模态窗口简单的搭建一个QQ界面
搭建一个QQ界面其实是一个很简单的实现,需要几种切换视图的控制器组合一起使用,即导航控制器.标签栏控制器.模态窗口.其中,将标签栏控制器设置为window的rootViewController,因为Q ...
- Qt实现QQ界面
1.Qt实现QQ界面是通过QToolBox类来实现的,基本结构是:QToolBox里面装QGroupBox,然后QGroupBox里面装QToolButton,设置好相关属性即可 2.定义类继承QTo ...
- iOS调用QQ发起临时会话
iOS调用QQ发起临时会话 iOS调用qq前先判断是否安装qq, 之后通过OpenURL打开对用的qq NSURL *url = [NSURL URLWithString:@"mqq://& ...
- iOS 简单引导界面
代码地址如下:http://www.demodashi.com/demo/11607.html 前言 现在很多APP在用户第一次用的时候,由于用户可能并不知道其中一些功能点的时候,这个时候就需要我们来 ...
- WPF系列教程——(一)仿TIM QQ界面 - 简书
原文:WPF系列教程--(一)仿TIM QQ界面 - 简书 TIM QQ 我们先来看一下TIM QQ长什么样,整体可以将界面分为三个部分 TIM QQ 1. 准备 阅读本文假设你已经有XAML布局的基 ...
随机推荐
- [SCOI2009]windy数 数位dp
Code: #include<cmath> #include<iostream> #include<cstdio> using namespace std; con ...
- [AHOI2013]作业 莫队 树状数组
#include<cmath> #include<cstdio> #include<algorithm> #include<string> #inclu ...
- 快速沃尔什变换(FWT)笔记
开头Orz hy,Orz yrx 部分转载自hy的博客 快速沃尔什变换,可以快速计算两个多项式的位运算卷积(即and,or和xor) 问题模型如下: 给出两个多项式$A(x)$,$B(x)$,求$C( ...
- ajax异步刷新
前台js <script type="text/javascript"> function getLands() { $.ajax({ url:"httpse ...
- 获取系统信息(CPU、内存等)
简述 获取计算机CPU.主板.内存.硬盘.网卡这些信息,Qt中没有相应的处理,所以需要根据平台来做差异化处理.也许Qt为了跨平台,没有提供与操作系统和硬件密切相关的一些功能(如内存.CPU.硬盘等相关 ...
- Flex 远程视频监控观看端新版
第一个版本号仅仅做了预览这一块 http://blog.csdn.net/songanling/article/details/38306037,后面老板看了认为色调太暗.看得不舒服,然后就開始又一次 ...
- 2014 Unity3d大会的部分总结
一.项目开发.管理和公布策略 1. 四大准则 a. 美术的资源量 b. 美术规范,要依据开发什么样的游戏制定统一的规范,这样尽可能的形成统一的规范.然后程序要协助美 ...
- sas数据导入终极汇总-之中的一个
将数据文件读入SAS --DATA Step / PROC IMPORT 1.将SAS文件读入SAS-- data sasuser.saslin; set "F:\sa ...
- What is the difference between SET and SELECT when assigning values to variables, in T-SQL?
http://vyaskn.tripod.com/differences_between_set_and_select.htm https://stackoverflow.com/questions/ ...
- List of content management systems
https://en.wikipedia.org/wiki/List_of_content_management_systems Microsoft ASP.NET Name Platform Sup ...