iOS Development UI Chapter-a simple car icon display program using nested models
I.. plist document and Project structure chart
Description: This is an example of a nested model
Second, the code example:
YYcarsgroup.h File Code:
1//2// YYcarsgroup.h 3// 07-Auto Show (Advanced) 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 @interface yycarsgroup:nsobject12 @property (nonatomic,copy) NSString *title;13 @property (nonatomic,strong) Nsarray *cars;14 (instancetype) initwithdict: (Nsdictionary *) dict; + (Instancetype) carsgroupwithdict: (nsdictionary *) dict;17 @end
YYCARSGROUP.M File Code:
1//2// yycarsgroup.m 3// 07-Auto Show (Advanced) 4//5// Created by Apple on 14-5-28.6// Copyright (c) 2014 I Tcase. All rights reserved. 7//8 9 #import "YYcarsgroup.h" #import "YYcars.h" @implementation YYcarsgroup13-(instancetype) initwithdict :(Nsdictionary *) dict14 { if (self=[super init]) { //nested dictionary to model self.title=dict[@ "title"];18 19 //Note Nsarray *dictcars=dict[@ "Cars"];21 //Like the following can be said to mention high performance, Nsmutablearray *arraym=[nsmutablearray Arraywithcapacity:dictcars.count];23 for (nsdictionary *dict in dictcars) { yycars *yycars=[[ Yycars alloc]initwithdict:dict];25 [arraym addobject:yycars];26 }27 //An array of assignment storage models to properties self.cars=arraym;29 }30 return self;31}32 + (instancetype) carsgroupwithdict: (Nsdictionary *) Dict34 {35 return [[Self alloc]initwithdict:dict];36}37 @end
YYcars.h file
1//2// YYcars.h 3// 07-Auto Show (Advanced) 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 @interface yycars:nsobject12 @property (nonatomic,copy) NSString *name;13 @property (nonatomic,copy) nsstring *icon;14-(Instancetype) Initwithdict: (Nsdictionary *) dict;16 + (instancetype) Carswithdict: (nsdictionary *) dict;17 @end
YYCARS.M file
1//2// YYCARS.M 3// 07-Auto Show (Advanced) 4//5// Created by Apple on 14-5-28.6// Copyright (c) 2014 itcase . All rights reserved. 7//8 9 #import "YYcars.h" @implementation YYcars12-(Instancetype) Initwithdict: (Nsdictionary *) dict14 {15
if (Self=[super init]) { self.name=dict[@ "name"];17 self.icon=dict[@ "icon"];18 }19 return Self;20}21 + (instancetype) carswithdict: (Nsdictionary *) dict22 { return [[Self alloc]initwithdict:dict];24}25 @end
YYVIEWCONTROLLER.M file
1//2//YYVIEWCONTROLLER.M 3//07-Auto Show (Advanced) 4//5//Created by Apple on 14-5-28. 6//Copyright (c) 2014 itcase. All rights reserved. 7//8 9 #import "YYViewController.h" #import "YYcarsgroup.h" #import "YYcars.h" @interface Yyviewcontroll ER () <UITableViewDataSource> @property (Strong, nonatomic) Iboutlet UITableView *tableview; @property (Nonatomic,strong) Nsarray *car; @end @implementation Yyviewcontroller-(void) viewdidload {[Super viewdidload]; 23 24 SELF.TABLEVIEW.ROWHEIGHT=60.F; self.tableview.datasource=self; NSLog (@ "%d", self.car.count); #pragma mark-to implement lazy loading 29//1. Read data from a package 30//2. Dictionary to Model 31//3. Return Cars-(Nsarray *) car (*) NSString *fullpath= [[NSBundle mainbundle]pathforresource:@ "Cars_total.plist" oftype:nil]; Panax Notoginseng nsarray *arraym=[nsarray Arraywithcontentsoffile:fullpath]; Nsmutablearray *carsarray=[Nsmutablearray array]; (Nsdictionary *dict in Arraym) {Yycarsgroup *carsgroup=[yycarsgroup carsgroupwithdict:dict ]; [Carsarray Addobject:carsgroup]; _car=[carsarray copy]; The _car return; The #pragma mark-to achieve tableview data show 51//1. Set up a data source that complies with protocol 52//2. Returns the group 53//3. Returns row 54//4. Data for each group per row 55//4.1 go to fetch cel in cache L 56//4.2 If not, create cell and stamp 57//4.3 set cell data 58//4.4 return cell-(Nsinteger) Numberofsectionsintableview: (UITableView *) TableView (Self.car.count)-(Nsinteger) TableView: (UITableView *) TableView numberofrowsinsection: (nsinteger) section (Yycarsgroup) (*carsgroup=self.car[section); UIT return carsgroup.cars.count; Ableviewcell *) TableView: (UITableView *) TableView Cellforrowatindexpath: (Nsindexpath *) Indexpath {+-static Nsstri Ng *[email protected] "car"; 72//4.1 go to cache to fetch cell UITableViewCell *cell=[tableview dequeuereusablecellwithIdentifier:identifier]; 74//4.2 If not, create a cell and stamp the IF (cell==nil) {Cell=[[uitableviewcell alloc]initwithstyle:uitableviewcells Tyledefault Reuseidentifier:identifier]; 77} 78//4.3 set data for cell 79//Set corresponding group Yycarsgroup *carsgroup=self.car[indexpath.section]; 81//Set corresponding line of Yycars *yycars=carsgroup.cars[indexpath.row]; Cell.imageview.image=[uiimage ImageNamed:yycars.icon]; Cell.textlabel.text=yycars.name; 86//4.4 return cell; 88} 89 90//Set title for each group (NSString *) TableView: (UITableView *) TableView titleforheaderinsection: (Nsinteger) section 92 {9 3 Yycarsgroup *carsgroup=self.car[section]; 94 return carsgroup.title; 95} 96 97//SET Index 98-(Nsarray *) Sectionindextitlesfortableview: (UITableView *) TableView 99 {100//Use KVC to remove all headers 101 Nsarray *title=[self.car valueforkeypath:@ "title"];102 return title;103}104 105//Hide Status bar 106-(BOOL) Prefersstatusbar Hidden107 {108 return yes;109}110 @end
Implementation results:
Third, the attention point
1. Setting the Index
The code is as follows:
Set index-(Nsarray *) Sectionindextitlesfortableview: (UITableView *) tableview{ //Use KVC to remove all headers Nsarray *title= [Self.car valueforkeypath:@ "title"]; return title;}
Performance optimization for 2.cell
The code is as follows:
Static nsstring *[email protected] "car"; 4.1 Go to cache to fetch cell UITableViewCell *cell=[tableview dequeuereusablecellwithidentifier:identifier]; 4.2 If not, create the cell and stamp if (cell==nil) { Cell=[[uitableviewcell Alloc]initwithstyle: Uitableviewcellstyledefault reuseidentifier:identifier]; }
iOS Development UI Chapter-a simple car icon display program using nested models