IOS开发学习实例之微信消息页
来源:互联网 发布:ip 80端口需要备案不 编辑:程序博客网 时间:2024/06/05 20:40
在极客学院学习这个实例有几天了,今天完成了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文件。
//读取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)]; } } }
- IOS开发学习实例之微信消息页
- 微信开发之异步消息
- 微信开发之接收普通消息
- 微信开发之发送消息接口
- 微信开发之消息回复
- 微信开发之消息模板
- 微信asp+sqlser开发实例——接收消息
- 微信asp+sqlser开发实例——回复消息
- 【微信公众号开发】自我学习第四章:消息回复之翻译回复
- iOS之微信支付开发
- iOS开发之微信支付
- iOS开发之微信支付
- iOS开发之微信支付
- iOS之微信支付开发
- iOS之“微信支付”开发流程
- iOS开发之微信支付
- IOS开发之微信山寨版
- iOS开发之微信集成支付
- Linux中7个用来浏览网页和下载文件的命令
- 使用 QEMU 进行嵌入式系统开发
- Android开发—随笔
- [Java]集合架构分析
- 延迟初始化 beans
- IOS开发学习实例之微信消息页
- 分享GRE写作素材中的常用词
- 第一章,Hello World(Lua)
- QT for Android 使用Item作为QML根对象
- 微软100题(96)strcpy的实现
- virtualenv安装
- 寻找第K大的数
- sqlite数据库报错:database disk image is malformed
- 算法学习之数组元素查找