在極客學院學習這個實例有幾天了,今天完成了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)];
}
}
}