你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發UI篇—使用嵌套模型完成的一個簡單汽車圖標展示程序

iOS開發UI篇—使用嵌套模型完成的一個簡單汽車圖標展示程序

編輯:IOS開發綜合
YYcarsgroup.h文件代碼:   復制代碼  1 //  2 //  YYcarsgroup.h  3 //  07-汽車展示(高級)  4 //  5 //  Created by apple on 14-5-28.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import <Foundation/Foundation.h> 10  11 @interface YYcarsgroup : NSObject 12 @property(nonatomic,copy)NSString *title; 13 @property(nonatomic,strong)NSArray *cars; 14  15 -(instancetype)initWithDict:(NSDictionary *)dict; 16 +(instancetype)carsgroupWithDict:(NSDictionary *)dict; 17 @end 復制代碼 YYcarsgroup.m文件代碼:   復制代碼  1 //  2 //  YYcarsgroup.m  3 //  07-汽車展示(高級)  4 //  5 //  Created by apple on 14-5-28.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import "YYcarsgroup.h" 10 #import "YYcars.h" 11  12 @implementation YYcarsgroup 13 -(instancetype)initWithDict:(NSDictionary *)dict 14 { 15     if (self=[super init]) { 16         //嵌套的字典轉模型 17         self.title=dict[@"title"]; 18          19         //注意 20         NSArray *dictcars=dict[@"cars"]; 21         //像下面這樣寫可以提高性能 22         NSMutableArray *arrayM=[NSMutableArray arrayWithCapacity:dictcars.count]; 23         for (NSDictionary *dict  in dictcars) { 24             YYcars *yycars=[[YYcars alloc]initWithDict:dict]; 25             [arrayM addObject:yycars]; 26         } 27          // 賦值存儲模型的數組給屬性 28         self.cars=arrayM; 29     } 30     return self; 31 } 32  33 +(instancetype)carsgroupWithDict:(NSDictionary *)dict 34 { 35     return [[self alloc]initWithDict:dict]; 36 } 37 @end 復制代碼 YYcars.h文件   復制代碼  1 //  2 //  YYcars.h  3 //  07-汽車展示(高級)  4 //  5 //  Created by apple on 14-5-28.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import <Foundation/Foundation.h> 10  11 @interface YYcars : NSObject 12 @property(nonatomic,copy)NSString *name; 13 @property(nonatomic,copy)NSString *icon; 14  15 -(instancetype)initWithDict:(NSDictionary *)dict; 16 +(instancetype)carsWithDict:(NSDictionary *)dict; 17 @end 復制代碼  YYcars.m文件   復制代碼  1 //  2 //  YYcars.m  3 //  07-汽車展示(高級)  4 //  5 //  Created by apple on 14-5-28.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import "YYcars.h" 10  11 @implementation YYcars 12  13 -(instancetype)initWithDict:(NSDictionary *)dict 14 { 15     if (self=[super init]) { 16         self.name=dict[@"name"]; 17         self.icon=dict[@"icon"]; 18     } 19     return self; 20 } 21 +(instancetype)carsWithDict:(NSDictionary *)dict 22 { 23     return [[self alloc]initWithDict:dict]; 24 } 25 @end 復制代碼 YYViewController.m文件   復制代碼   1 //   2 //  YYViewController.m   3 //  07-汽車展示(高級)   4 //   5 //  Created by apple on 14-5-28.   6 //  Copyright (c) 2014年 itcase. All rights reserved.   7 //   8    9 #import "YYViewController.h"  10 #import "YYcarsgroup.h"  11 #import "YYcars.h"  12   13 @interface YYViewController ()<UITableViewDataSource>  14 @property (strong, nonatomic) IBOutlet UITableView *tableview;  15 @property(nonatomic,strong) NSArray *car;  16 @end  17   18 @implementation YYViewController  19   20 - (void)viewDidLoad  21 {  22     [super viewDidLoad];  23       24     self.tableview.rowHeight=60.f;  25     self.tableview.dataSource=self;  26     NSLog(@"%d",self.car.count);  27 }  28 #pragma mark- 實現懶加載  29 //1.從包中讀取數據  30 //2.字典轉模型  31 //3.返回cars  32 -(NSArray *)car  33 {  34     if (_car==nil) {  35         36         NSString *fullpath= [[NSBundle mainBundle]pathForResource:@"cars_total.plist" ofType:nil];  37         NSArray  *arrayM=[NSArray arrayWithContentsOfFile:fullpath];  38           39         NSMutableArray *carsarray=[NSMutableArray array];  40         for (NSDictionary  *dict in arrayM) {  41             YYcarsgroup *carsgroup=[YYcarsgroup carsgroupWithDict:dict];  42             [carsarray addObject:carsgroup];  43         }  44         _car=[carsarray copy];  45     }  46     return _car;  47 }  48   49   50 #pragma mark-  實現tableview的數據展示  51 //1.設置數據源,遵守協議  52 //2.返回組  53 //3.返回行  54 //4.每組每行對應的數據  55 //4.1去緩存中去取cell  56 //4.2若沒有,則創建cell,並蓋章  57 //4.3設置cell的數據  58 //4.4返回cell  59   60 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView  61 {  62     return self.car.count;  63 }  64 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  65 {  66     YYcarsgroup *carsgroup=self.car[section];  67     return carsgroup.cars.count;  68 }  69 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  70 {  71     static NSString *identifier=@"car";  72     //4.1去緩存中去取cell  73     UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier];  74     //4.2若沒有,則創建cell,並蓋章  75     if (cell==nil) {  76         cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];  77     }  78     //4.3設置cell的數據  79     //設置對應的組  80     YYcarsgroup *carsgroup=self.car[indexPath.section];  81     //設置對應的行  82     YYcars *yycars=carsgroup.cars[indexPath.row];  83   84     cell.imageView.image=[UIImage imageNamed:yycars.icon];  85     cell.textLabel.text=yycars.name;  86     //4.4返回cell  87     return cell;  88 }  89   90 //設置每組的標題  91 -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section  92 {  93     YYcarsgroup *carsgroup=self.car[section];  94     return carsgroup.title;  95 }  96   97 //設置索引  98 -(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView  99 { 100     //利用kvc取出所有的標題 101     NSArray *title=[self.car  valueForKeyPath:@"title"]; 102     return title; 103 } 104  105 //隱藏狀態欄 106 -(BOOL)prefersStatusBarHidden 107 { 108     return  YES; 109 } 110 @end
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved