IOS开发学习实例之微信消息页
2015-06-17 16:06
537 查看
在极客学院学习这个实例有几天了,今天完成了80%。后面还有个toolbar的功能没有实现。原因是老师的视频中少了这部分内容。后面自己补起来吧。
由于本人是初学IOS开发,比较小白,很多东西都不懂,跟着码代码,囫囵吞枣,目的就是想通过实战培养做IOS项目的感觉。
今天来就来梳理一下这个项目。
项目简介:
仿照微信公众号消息页面。
微信公众号消息页面里面含有三种不同的消息,文本, 单图,多图消息。在页面的最下方还有一个菜单栏,菜单栏分为一级,二级,三级菜单。
一、架构
它还是一个典型的MVC架构。
1. 项目文件的组织:
- Views ———————– 存放所有的视图类和对应xib文件
- Library ———————- 存放第三方库文件
- Category ——————–存放第三方类别文件和项目自身类文件
- Model ———————–存放所有模型类文件
- AppDelegate.h
- AppDelegate.m
- ViewController.h
- ViewController.m————主控制器文件
- ViewController.xib———–主视图文件
- Supporting Files
视图文件架构
该项目主体是一个UITableView,里面有三种不同的Cell,分别对应三种不同的消息。
文本消息,单图消息,多图消息。
UITableView
TextMessageCell
SingleImageCell
ListImageCell
这里有一个BaseCell,是所有Cell的父类,里面实施了一些公共方法。
实施步骤(个人理解):
1. 先确定数据结构。建立对应的model类。
2. 在ViewController里在特定的事件中读取数据并绑定到对应的model类中。
3. 绑定数据到每个Cell
4. 设置每个Cell的高度在frameinfo中
5. 设置每个Cell的layout在每个Cell相应的Controller中
代码示例:
1. 如何解析JSON文件。
由于本人是初学IOS开发,比较小白,很多东西都不懂,跟着码代码,囫囵吞枣,目的就是想通过实战培养做IOS项目的感觉。
今天来就来梳理一下这个项目。
项目简介:
仿照微信公众号消息页面。
微信公众号消息页面里面含有三种不同的消息,文本, 单图,多图消息。在页面的最下方还有一个菜单栏,菜单栏分为一级,二级,三级菜单。
一、架构
它还是一个典型的MVC架构。
1. 项目文件的组织:
- Views ———————– 存放所有的视图类和对应xib文件
- Library ———————- 存放第三方库文件
- Category ——————–存放第三方类别文件和项目自身类文件
- Model ———————–存放所有模型类文件
- AppDelegate.h
- AppDelegate.m
- ViewController.h
- ViewController.m————主控制器文件
- ViewController.xib———–主视图文件
- Supporting Files
视图文件架构
该项目主体是一个UITableView,里面有三种不同的Cell,分别对应三种不同的消息。
文本消息,单图消息,多图消息。
UITableView
TextMessageCell
SingleImageCell
ListImageCell
这里有一个BaseCell,是所有Cell的父类,里面实施了一些公共方法。
实施步骤(个人理解):
1. 先确定数据结构。建立对应的model类。
2. 在ViewController里在特定的事件中读取数据并绑定到对应的model类中。
3. 绑定数据到每个Cell
4. 设置每个Cell的高度在frameinfo中
5. 设置每个Cell的layout在每个Cell相应的Controller中
代码示例:
1. 如何解析JSON文件。
//读取json文件 NSString *path = [[NSBundle mainBundle] pathForResource:@"message" ofType:@"json"]; NSData *data = [NSData dataWithContentsOfFile:path]; NSError *error = nil; //解析JSON文件 NSDictionary *messageInfo = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error]; if(error){ NSLog(@"error: %@", [error description]); }else{ double lastShowTime = 0; _isShowTimeDatas = [[NSMutableArray alloc] init]; NSArray *messageArray = messageInfo[@"data"]; for (NSDictionary *messageInfo in messageArray) { ServiceMessage *message = [[ServiceMessage alloc] initWithDic:messageInfo]; [self.messageDatas addObject:message]; if(fabs(message.messageTime-lastShowTime) > 5*60){ [_isShowTimeDatas addObject:@(YES)]; lastShowTime = message.messageTime; }else{ [_isShowTimeDatas addObject:@(NO)]; } } }
相关文章推荐
- 微信公众号上传多媒体文件接口用JAVA怎么实现
- 做一个微信语音点播系统
- 判断页面是否是微信打开的
- 微信开发
- 微信公众平台开发入门教程
- 高仿微信
- 微信公众号 历史记录、阅读数、赞数mp.weixin.qq.com/mp/getappmsgext
- 微信登录授权
- 关于微信开发的语音存储问题
- .NET平台下的微信SDK(Rabbit.WeiXin)开源发布
- 微信公众平台开发之环境搭建
- 谷歌大脑科学家 Caffe缔造者 贾扬清 微信讲座完整版
- android代码混淆之微信分享不起作用
- 20150616完 一个测试注意力的小程序
- 微信公众平台获取用户地理位置之开发文档详解
- VSTO学习笔记(七)基于WPF的Excel分析、转换小程序
- Java与微信不得不说的故事——消息的接收与发送
- 第二讲 探秘微信公众号
- 如何站在使用者的角度来设计SDK-微信公众号开发SDK(消息处理)设计之抛砖引玉
- 微信JS-SDK Demo