亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

UITableView 實現汽車品牌(demo)

2020-07-26 03:34:38
字體:
來源:轉載
供稿:網友

看TableView的資料其實已經蠻久了,一直想寫點兒東西,卻總是因為各種原因拖延,今天晚上有時間靜下心來記錄一些最近學習的TableView的知識。下面進入正題,UITableView堪稱UIKit里面最復雜的一個控件了,使用起來不算難,但是要用好并不容易。當使用的時候我們必須要考慮到后臺數據的設計,tableViewCell的設計和重用以及tableView的效率等問題。

上次介紹的UITableView,這里再做一個UITableView的小程序,汽車品牌,截圖如下:

1.1創建項目,這里不多講。

1.2 把所有汽車品牌的圖片放到images.xcassets中,如下圖:

1.3創建 plist數據,plist數據里面每個array為一個汽車品牌分組,每個array里面又有一個array,這里面存放每個分組下所有的品牌汽車數據,數據如下圖。

1.4數據創建完之后,然后設計頁面,頁面很簡單,直接放一個UItable View就可以了。

2.1后臺代碼,第一步導入

<UITableViewDataSource,UITableViewDelegate,UIAlertViewDelegate>

只有導入這UItable View的這幾個代理,我們才能在后面的代碼中使用UItable View的一些相對應的方法。

2.2 創建UItable View控件的屬性,和創建一個存儲數據的數組,如下。

@property (weak, nonatomic) IBOutlet UITableView *tableView;@property(nonatomic,strong)NSArray *carGroups;

2.3 加載數據,這邊先要創建兩個模型類來保存數據,國為我們這里的數據都在本地的plist文化中,所以我們要把這個plist里面的數據讀取出來保存在

創建的carGroups數組中,而本地的plist文件是一個array類型,而每個array里面又有一個array數組,所以我們要創建兩個模型類來保存數據,一個模型類保存外面的array數據,一個模型類來保存array里面的子array數據,然后在模型類里面創建和plist里面對應的數據的屬性和方法 

代碼如下:

#import <Foundation/Foundation.h>@interface ZKCarModel : NSObject//頭像@property(nonatomic,copy)NSString * icon;//名字@property(nonatomic,copy)NSString *name;+(instancetype)CarWithDict:(NSDictionary *)dic;-(instancetype)initWithDict:(NSDictionary *)dic;@end#import "ZKCarModel.h"@implementation ZKCarModel-(instancetype)initWithDict:(NSDictionary *)dic{ if(self=[super init]) { [self setValuesForKeysWithDictionary:dic]; } return self;}+(instancetype)CarWithDict:(NSDictionary *)dic{ return [[self alloc] initWithDict:dic];}@end#import <Foundation/Foundation.h>#import "ZKCarModel.h"@interface ZKCarGroupModel : NSObject//題目@property(nonatomic,copy)NSString *title;@property(nonatomic,strong)NSArray *cars;+(instancetype)CarGroupWithDic:(NSDictionary *)dic;-(instancetype)initWithDict:(NSDictionary *)dic;@end#import "ZKCarGroupModel.h"@implementation ZKCarGroupModel-(instancetype)initWithDict:(NSDictionary *)dic{ if(self=[super init]) { self.title=dic[@"title"]; NSMutableArray *Array=[NSMutableArray array]; for (NSDictionary *dict in dic[@"cars"]) { ZKCarModel *Car=[ZKCarModel CarWithDict:dict]; [Array addObject:Car]; } self.cars=Array; } return self;}+(instancetype)CarGroupWithDic:(NSDictionary *)dic{ return [[self alloc] initWithDict:dic];}@end

2.4,對應數據的模型類創建好以后,開始創建數組懶加載

代碼如下:

#import <Foundation/Foundation.h>@interface ZKCarModel : NSObject//頭像@property(nonatomic,copy)NSString * icon;//名字@property(nonatomic,copy)NSString *name;+(instancetype)CarWithDict:(NSDictionary *)dic;-(instancetype)initWithDict:(NSDictionary *)dic;@end#import "ZKCarModel.h"@implementation ZKCarModel-(instancetype)initWithDict:(NSDictionary *)dic{ if(self=[super init]) { [self setValuesForKeysWithDictionary:dic]; } return self;}+(instancetype)CarWithDict:(NSDictionary *)dic{ return [[self alloc] initWithDict:dic];}@end#import <Foundation/Foundation.h>#import "ZKCarModel.h"@interface ZKCarGroupModel : NSObject//題目@property(nonatomic,copy)NSString *title;@property(nonatomic,strong)NSArray *cars;+(instancetype)CarGroupWithDic:(NSDictionary *)dic;-(instancetype)initWithDict:(NSDictionary *)dic;@end#import "ZKCarGroupModel.h"@implementation ZKCarGroupModel-(instancetype)initWithDict:(NSDictionary *)dic{ if(self=[super init]) { self.title=dic[@"title"]; NSMutableArray *Array=[NSMutableArray array]; for (NSDictionary *dict in dic[@"cars"]) { ZKCarModel *Car=[ZKCarModel CarWithDict:dict]; [Array addObject:Car]; } self.cars=Array; } return self;}+(instancetype)CarGroupWithDic:(NSDictionary *)dic{ return [[self alloc] initWithDict:dic];}@end

2.5,數據加載完以后,然后就要開始寫UItable View中相對應的代理方法了

代碼如下:

//設置分區-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return self.carGroups.count;}//設置每個分區顯示多少行數據-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ ZKCarGroupModel *Model=self.carGroups[section]; return Model.cars.count;}//每行顯示的數據-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *ID=@"A"; //從緩存中讀取cell UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:ID]; //如果緩存中沒有cell,創建一個新的cell if(cell==nil){ cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID]; } //找到當前分區的索引 ZKCarGroupModel *GroupModel=self.carGroups[indexPath.section]; //找到當前分區的行 ZKCarModel *CarModel=GroupModel.cars[indexPath.row]; //設置cell顯示的文字 cell.textLabel.text=CarModel.name; //設置cell顯示的圖片 cell.imageView.image=[UIImage imageNamed:CarModel.icon]; return cell;}

上面3個代理方法是UItable View中最常用的3個方法。寫完這3個方法運行xcode就可以看到數據了。

但這里還有些小問題,這里顯示的所有品牌都是從上往下排的,沒有一個分組,這樣我們想找哪個品牌的汽車并不太好找,所以,我們要把同一個數據的汽車品牌加一個字母表示,這怎么做呢,這就要給UItable View的每個分區加一個頭了,使用titleForHeaderInSection代理方法

代碼如下:

//設置頭樣式-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ //找到當前分區在數組中的索引 ZKCarGroupModel *Model=self.carGroups[section];  //返回當前分區的數據中的title return Model.title;}

2.6上面的程序中,在屏幕的最右邊還有一個索引,點這個索引就找找到相對應的分區數據,其實這個也很簡單,也是調用一個

sectionIndexTitlesForTableView的代理方法,這個方法返回一個array的數組。

代碼如下:

//設置索引-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{ return [self.carGroups valueForKeyPath:@"title"];}

2.7,這個程序中還做了一個,當你點擊屏幕上每個汽車品牌的時候還會彈出一個對話框,為什么要做這個呢,因為很多時候屏幕上的圖片和文字都是可以點擊的,所以光做一個靜態顯示好不是很好,雖然這個對話框好像并沒有什么用,但這里只是講下這個方法的使用

代碼如下:

//點擊cell時變化-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ //創建對話框 UIAlertView *alertView=[[UIAlertView alloc] initWithTitle:@"汽車" message:@"取消" delegate:self cancelButtonTitle:@"確認" otherButtonTitles:@"取消", nil]; //設置樣式 alertView.tag=1; alertView.alertViewStyle=UITableViewCellStyleSubtitle; //[alertView ];  [alertView show];}

3.1 一個UITableView做的汽車品牌就這樣OK了,雖然這并不是一個APP但,這里已經把UITableView的一些常用代理方法都寫到了,當然UITableView還有很多代表方法,這里并沒有講,但會了這些以后,在以后的使用中我們可以再來查詢,重要的是思想。

以上是UITableView 實現汽車品牌的全部內容,希望對大家有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲色图25p| 欧美日韩国产一区二区三区| 久久久久久综合网天天| 国产精品福利小视频| 欧美激情2020午夜免费观看| 亚洲人成网站色ww在线| 亚洲国产精品电影在线观看| 欧美精品999| www.日韩不卡电影av| 日韩av手机在线看| 日韩免费av片在线观看| 欧美精品激情blacked18| 精品久久久久久久久久久久| 亚洲午夜激情免费视频| 亚洲另类图片色| 91亚洲va在线va天堂va国| 97成人精品区在线播放| 国产精品美女久久久久久免费| 亚洲男人的天堂在线| 成人精品视频久久久久| 日韩欧美精品免费在线| 51精品国产黑色丝袜高跟鞋| 亚洲欧美福利视频| 久久久在线观看| 久久精品国产99国产精品澳门| 情事1991在线| 欧美激情国内偷拍| 日韩精品免费在线视频| 日韩久久午夜影院| 成人国产精品一区二区| 午夜免费在线观看精品视频| 国产精品一区二区久久国产| 国产精品美腿一区在线看| 91深夜福利视频| 日韩电影网在线| 亚洲精品电影网在线观看| 136fldh精品导航福利| 国产欧美日韩综合精品| 日韩中文字幕国产精品| 国产主播精品在线| 日本高清视频精品| 欧美孕妇性xx| 亚洲欧美色婷婷| 国产精品99导航| 亚洲高清av在线| 中文字幕精品av| 日韩有码在线视频| 欧美成人精品在线播放| 欧美老肥婆性猛交视频| 97香蕉久久夜色精品国产| 欧美大成色www永久网站婷| 欧美成人精品在线视频| 一区二区三区天堂av| 欧美电影免费观看网站| 亚洲曰本av电影| 久久91亚洲精品中文字幕奶水| 68精品久久久久久欧美| 国产日韩在线亚洲字幕中文| 色一情一乱一区二区| 成人免费观看a| 国产亚洲成av人片在线观看桃| 91成人精品网站| 精品亚洲一区二区三区四区五区| 国产91精品青草社区| 欧美亚洲免费电影| 色婷婷av一区二区三区久久| 国产精品久久久久77777| 国产精品成熟老女人| 日本91av在线播放| 国产精品video| 国产97人人超碰caoprom| 国产一区二区三区在线视频| 亚洲女人被黑人巨大进入| 91po在线观看91精品国产性色| 国产在线98福利播放视频| 国产亚洲视频在线观看| 国产亚洲xxx| 欧美激情一区二区三区在线视频观看| 欧美黑人狂野猛交老妇| 国产成人综合av| 92看片淫黄大片看国产片| 日本精品va在线观看| 国产精品成人va在线观看| xvideos国产精品| 日韩一区二区在线视频| 日本精品视频在线观看| 国产精品爱久久久久久久| 国产日韩精品综合网站| 国产精品青青在线观看爽香蕉| 成人免费观看网址| 成人国产在线视频| 日本精品免费观看| 一级做a爰片久久毛片美女图片| 国产成人在线亚洲欧美| 2019中文字幕在线免费观看| 日韩欧美第一页| 国产午夜精品久久久| 欧美疯狂xxxx大交乱88av| 精品国产一区二区三区久久狼5月| 欧美成人精品激情在线观看| 日本亚洲欧洲色α| 在线看日韩欧美| 久久777国产线看观看精品| 国产一区视频在线播放| 久久青草精品视频免费观看| 亚洲精品永久免费精品| 精品国产电影一区| 69视频在线免费观看| 91精品国产自产91精品| 亚洲精品一区av在线播放| 国产97在线|日韩| 欧美国产亚洲精品久久久8v| 国产亚洲人成a一在线v站| 中文字幕一区日韩电影| 色综合91久久精品中文字幕| 中文字幕亚洲无线码在线一区| 欧美日韩国产一区在线| 亚洲激情视频在线观看| 亚洲加勒比久久88色综合| 日韩在线视频观看正片免费网站| 91精品国产免费久久久久久| 国产精品入口免费视频一| 国产精品爽爽爽爽爽爽在线观看| 另类色图亚洲色图| 亚洲欧美国产精品| 久久在线免费观看视频| 91九色视频导航| 欧美最顶级丰满的aⅴ艳星| 欧美激情xxxx性bbbb| 久久久久久久久久久91| 欧美精品videosex性欧美| 热99在线视频| 美日韩精品免费观看视频| 国产一区二区久久精品| 国产精品偷伦视频免费观看国产| 国内免费久久久久久久久久久| 欧美夜福利tv在线| 亚洲加勒比久久88色综合| 国产日韩中文字幕在线| 国产日产欧美精品| 日韩视频免费中文字幕| 久久久久久久网站| 亚洲最大成人网色| 国产精品女主播视频| 亚洲毛片一区二区| 久久精品国产欧美激情| 亚洲天堂2020| 欧美黑人性视频| 久久久成人的性感天堂| 成人一区二区电影| 中文字幕国产精品久久| 成人网中文字幕| 亚洲最新在线视频| 最新69国产成人精品视频免费| 日韩中文字幕免费| 日韩欧美在线字幕| 8050国产精品久久久久久| 久久久久日韩精品久久久男男| 亚洲区一区二区| 狠狠躁天天躁日日躁欧美| 亚洲美女在线视频| 国产不卡精品视男人的天堂| 日本sm极度另类视频| 福利一区视频在线观看|