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


  1. 视图文件架构
    该项目主体是一个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)];             }         }     }
0 0