博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汽车品牌图标的tableView展示 代码
阅读量:4955 次
发布时间:2019-06-12

本文共 5783 字,大约阅读时间需要 19 分钟。

1 //  2 //  ViewController.m  3 //  汽车品牌  4 //  5 //  Created by 刘羽 on 15/12/31.  6 //  Copyright © 2015年 LX. All rights reserved.  7 //  8   9 #import "ViewController.h" 10 #import "Car.h" 11 #import "CarGroup.h" 12  13 @interface ViewController ()
14 15 @property(strong,nonatomic)NSArray *carGroups; 16 @property(strong,nonatomic)UITableView *tableView; 17 18 19 @end 20 21 @implementation ViewController 22 23 -(UITableView *)tableView 24 { 25 if (_tableView == nil) { 26 _tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain]; 27 _tableView.dataSource = self; 28 [self.view addSubview:_tableView]; 29 } 30 return _tableView; 31 32 } 33 34 -(NSArray *)carGroups 35 { 36 if (_carGroups == nil) { 37 //调用CarGroup类的 carGroups方法 返回模型数组 38 _carGroups = [CarGroup carGroups]; 39 } 40 return _carGroups; 41 } 42 43 44 45 46 - (void)viewDidLoad { 47 [super viewDidLoad]; 48 //调用tablelView添加到视图 49 [self tableView]; 50 } 51 52 #pragma mark - 调用数据源方法 53 54 //返回分组总数 55 //NSInteger 不是对象类型 没有* 56 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 57 { 58 return self.carGroups.count; 59 } 60 61 //返回每一组的数量:这里每一组只算车的数量,不算标题title 62 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 63 { //获得每一个分组 64 CarGroup *group = self.carGroups[section]; 65 //返回每一个分组中车数组的数量 66 return group.cars.count; 67 } 68 69 //设置单元格 70 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 71 { 72 //可重用标示符 73 static NSString *ID = @"Cell"; 74 //让表格缓冲区查找可重用cell 75 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; 76 //如果没有找到 77 if (cell == nil) { 78 //实例化cell 79 cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; 80 81 } 82 //设置cell的内容 83 //1>取出数据模型 84 CarGroup *group = self.carGroups[indexPath.section]; 85 Car *car = group.cars[indexPath.row]; 86 //2>设置数据 87 cell.imageView.image = [UIImage imageNamed:car.icon]; 88 cell.textLabel.text = car.name; 89 90 return cell; 91 } 92 93 //设置标题 94 -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 95 { 96 //找到group 97 CarGroup *group = self.carGroups[section]; 98 return group.title; 99 }100 101 //设置右侧索引列表102 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView103 {104 //索引数组中的内容跟分组无关105 //索引数组中的下标对应的是分组的下标106 // 返回self.carGroup中title的数组107 // NSMutableArray *arrayM = [NSMutableArray array];108 // for (HMCarGroup *group in self.carGroups) {109 // [arrayM addObject:group.title];110 // }111 // return arrayM;112 113 // KVC是cocoa的大招114 // 用来间接获取或者修改对象属性的方式115 // 使用KVC在获取数值时,如果指定对象不包含keyPath的"键名",会自动进入对象的内部查找116 // 如果取值的对象是一个数组,同样返回一个数组117 //一句代码就可以替代上面的四句代码118 return [self.carGroups valueForKeyPath:@"title"];119 }120 121 122 @end
////  CarGroup.h//  汽车品牌////  Created by 刘羽 on 15/12/31.//  Copyright © 2015年 LX. All rights reserved.//#import 
@interface CarGroup : NSObject//车首字母@property (strong,nonatomic)NSString *title;//车的数组,存放的是Car的模型数据@property (strong,nonatomic)NSArray *cars;-(instancetype)initWithDict:(NSDictionary *)dict;+(instancetype)carGroupWithDict:(NSDictionary *)dict;+(NSArray *)carGroups;@end
 

 

 
////  CarGroup.m//  汽车品牌////  Created by 刘羽 on 15/12/31.//  Copyright © 2015年 LX. All rights reserved.//#import "CarGroup.h"#import "Car.h"@implementation CarGroup-(instancetype)initWithDict:(NSDictionary *)dict{    self = [super init];    if (self) {        //先将CarGroup中的title字典用kvc方法转为模型        [self setValue:dict[@"title"] forKey:@"title"];        //然后将CarGroup中的汽车数组转给Car类进行字典转模型处理并返回模型存入car数组        self.cars = [Car carsWithArray:dict[@"cars"]];    }    return self;}+(instancetype)carGroupWithDict:(NSDictionary *)dict{
//传递给上面的对象方法去处理 return [[self alloc]initWithDict:dict];}//加载plist 并调用以上方法转为数组模型+(NSArray *)carGroups{ //创建一个集合存储plist NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"cars_total.plist" ofType:nil]]; //创建一个新的可变集合 NSMutableArray *arrayM = [NSMutableArray array]; //遍历array集合,将plist转为模型 for (NSDictionary *dict in array) { [arrayM addObject:[self carGroupWithDict:dict]]; } return arrayM;}//重写description方法,便于调试-(NSString *)description{ return [NSString stringWithFormat:@"<%@ : %p> {title: %@ , cars: %@}",self.class,self,self.title,self.cars];}@end
////  Car.h//  汽车品牌////  Created by 刘羽 on 15/12/31.//  Copyright © 2015年 LX. All rights reserved.//#import 
@interface Car : NSObject@property(strong,nonatomic)NSString *name;@property(strong,nonatomic)NSString *icon;-(instancetype)initWithDict:(NSDictionary *)dict;+(instancetype)carWithDict:(NSDictionary *)dict;+(NSArray *)carsWithArray:(NSArray *)array;@end
 
////  Car.m//  汽车品牌////  Created by 刘羽 on 15/12/31.//  Copyright © 2015年 LX. All rights reserved.//#import "Car.h"@implementation Car-(instancetype)initWithDict:(NSDictionary *)dict{    self = [super init];    if (self) {        [self setValuesForKeysWithDictionary:dict];    }    return self;}+(instancetype)carWithDict:(NSDictionary *)dict{    return [[self alloc]initWithDict:dict];}+(NSArray *)carsWithArray:(NSArray *)array{    NSMutableArray *arrayM = [NSMutableArray array];    for (NSDictionary *dict in array) {        //这里注意 方法不要写错 不要写成carsWithArray  这样变死循环了        [arrayM addObject:[self carWithDict:dict]];    }         return arrayM;    }@end

 

 
 

 

 

 

转载于:https://www.cnblogs.com/lxzju/p/5092051.html

你可能感兴趣的文章
Implement Stack using Queues
查看>>
理解javascript中的回调函数(callback)【转】
查看>>
hdu 6113 度度熊的01世界
查看>>
poj 2441 Arrange the Bulls
查看>>
Selenium Webdriver——处理Table
查看>>
CakePHP 2.x CookBook 中文版 第七章 模型 之 关联:将模型连接在一起
查看>>
计算机技术:编程语言:Python
查看>>
BZOJ 1637: [Usaco2007 Mar]Balanced Lineup
查看>>
CSS
查看>>
BZOJ3990 排序
查看>>
商城签到功能的设计与实现
查看>>
py定义变量-循环-条件判断
查看>>
python 练习 16
查看>>
[Spring Data MongoDB]学习笔记--注册一个Mongo实例
查看>>
Python——电子邮件、Internet协议相关模块
查看>>
MySQL innodb_flush_method 【转载】
查看>>
Eclipse報錯:Could not find or load main class
查看>>
SQLite Expert 删除表数据并重置自动增长列
查看>>
js闭包详解
查看>>
旋转矩阵 The Rotation Matrix
查看>>