iOS开发UI篇----UI基础之复杂的汽车列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iOS开发UI篇----UI基础之复杂的汽车列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5070字,纯文字阅读大概需要8分钟。
内容图文
plist :
模型Car
1 #import <Foundation/Foundation.h> 2 3@interface CZCar : NSObject 4 5/** 6 * 汽车名称 7*/ 8 @property (nonatomic,copy) NSString *name; 910/** 11 * 汽车的图标 12*/13 @property (nonatomic,copy) NSString *icon; 1415//实现字典转模型的方法 16// 对象方法17 - (instancetype) initWithDict:(NSDictionary *) dict; 1819//类方法20 + (instancetype) carWithDict:(NSDictionary *) dict; 212223@end242526272829#import"CZCar.h"3031@implementation CZCar 323334 - (instancetype)initWithDict:(NSDictionary *)dict 35{ 36if (self = [super init]) { 3738 self.icon = dict[@"icon"]; 39 self.name = dict[@"name"]; 4041 } 42return self; 43} 4445 + (instancetype)carWithDict:(NSDictionary *)dict 46{ 47return [[self alloc] initWithDict:dict]; 48} 495051@end
模型CarGroup
1 #import <Foundation/Foundation.h> 2 3@interface CZCarGroup : NSObject 4 5//标题 6 @property (nonatomic,copy) NSString *title; 7//汽车数组 8 @property (nonatomic,strong) NSArray *cars; 910//提供两个字典转模型的方法 11//对象方法12 - (instancetype) initWithDict:(NSDictionary *) dict; 13//类方法14 + (instancetype) carGroupWithDict:(NSDictionary *) dict; 1516//加载plist文件,把字典数组转换为模型数组17 + (NSArray *) carGroups; 18192021@end222324252627#import"CZCarGroup.h"28#import"CZCar.h"2930@implementation CZCarGroup 3132 - (instancetype)initWithDict:(NSDictionary *)dict 33{ 34if (self = [super init]) { 35 self.title = dict[@"title"]; 36 self.cars = dict[@"cars"]; 37 } 38return self; 39} 404142 + (instancetype)carGroupWithDict:(NSDictionary *)dict 43{ 44return [[self alloc] initWithDict:dict]; 45} 464748 + (NSArray *)carGroups 49{ 50// 1.加载plist 51// 获取绝对路径52 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"cars_total" ofType:@"plist"]; 53// 读取数组(分组的字典)54 NSArray *array = [NSArray arrayWithContentsOfFile:filePath]; 5556// 2.把array中分组的字典转为模型 57// 2.1 定义一个可变数组58 NSMutableArray *arrayM = [NSMutableArray array]; 59// 遍历array,把它里面存放的组字典转换为组模型,放到arrayM中60for (NSDictionary *dict in array) { 61 CZCarGroup *carGroup = [self carGroupWithDict:dict]; 62// 这个字典数组63 NSArray *dictArray = carGroup.cars; 64// 把dictArray转换为一个CZCar的模型数组 6566// 定义一个可变数组用来存放转换后的CZCar模型67 NSMutableArray *carsArray = [NSMutableArray array]; 68// 遍历字典数组dictArray,把字典转换为CZCar的模型69for (NSDictionary *dict in dictArray) { 70// 把字典转换为CZCar的模型71 CZCar *car = [CZCar carWithDict:dict]; 72// 把转换后的car添加到carsArray数组中73 [carsArray addObject:car]; 74 } 75// 把转换后的CZCar的模型数组赋值给carGroup的cars属性76 carGroup.cars = carsArray; 7778 [arrayM addObject:carGroup]; 79 } 80// 3.返回组模型数组81return arrayM; 82} 838485@end
控制器
#import " ViewController.h " #import " CZCarGroup.h " #import " CZCar.h " @interface ViewController () <UITableViewDataSource> //定义一个汽车分组的模型数组 @property (nonatomic,strong) NSArray *carGroups; @property (weak, nonatomic) IBOutlet UITableView *tableView; @end@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // 1.验证carGroups数组中存放什么东西 // NSLog(@"%@",self.carGroups); // 2.验证carGroup中的cars属性中存放是社么东西 // 取出第一个汽车分组 // CZCarGroup *carGroup = [self.carGroups firstObject];//// 打印cars属性// NSLog(@"%@",carGroup.cars); // 设置tableVeiw的数据源为控制器 self.tableView.dataSource = self; } #pragma mark - 实现数据源方法 //一共多少组 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { return self.carGroups.count; } //每一组多少行 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // 1.取出分组对应的carGroup模型 CZCarGroup *carGroup = self.carGroups[section]; // 2.返回cars属性的长度return carGroup.cars.count; } //每一行显示什么内容 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // 0.定义一个可重用的标示 NSString *reuseId = @"car"; // 1.去缓冲池中取可重用的cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseId]; // 2.如果缓冲池中没有,创建新的cellif (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseId]; } // 3.设置数据 // 3.1 取出组模型 CZCarGroup *carGroup = self.carGroups[indexPath.section]; // 3.2 取出CZCar模型 CZCar *car = carGroup.cars[indexPath.row]; // 3.3 使用car给cell设置数据 // 设置图标 cell.imageView.image = [UIImage imageNamed:car.icon]; // 设置汽车名称 cell.textLabel.text = car.name; // 4.返回cellreturn cell; } // 头部标题 - (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { // 1.取出组模型 CZCarGroup *carGroup = self.carGroups[section]; // 2.返回组模型的标题return carGroup.title; } // 实现分组索引 - (NSArray *) sectionIndexTitlesForTableView:(UITableView *)tableView { // 存放标题 // NSMutableArray *arrayM = [NSMutableArray array];//// 遍历carGroups,让把标题放入arrayM中// for (CZCarGroup *carGroup in self.carGroups) { // [arrayM addObject:carGroup.title]; ////// [arrayM addObject:@"啊哈哈"];// } //// return arrayM;return [self.carGroups valueForKey:@"title"]; } #pragma mark - 隐藏状态栏 // 询问状态栏要不要隐藏 - (BOOL)prefersStatusBarHidden { return YES; } #pragma mark - 懒加载数组 - (NSArray *)carGroups { if (_carGroups == nil) { _carGroups = [CZCarGroup carGroups]; } return _carGroups; } @end
原文:http://www.cnblogs.com/DoNib-Coding/p/4780813.html
内容总结
以上是互联网集市为您收集整理的iOS开发UI篇----UI基础之复杂的汽车列表全部内容,希望文章能够帮你解决iOS开发UI篇----UI基础之复杂的汽车列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。