首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
多组表格的思路
时间:
2014-12-17 18:40:05
阅读:
190
评论:
0
收藏:
0
[点我收藏+]
标签:
多组表格的思路
多组表格的思路
一、分析plist文件中的形式,创建model层数据 NSArray —> NSDictionary —>NSArray
最外层的数组
+ (
instancetype
)carGroupsWithDict:(
NSDictionary
*)dict
{
return
[[
self
alloc
]
initWithDict
:dict];
}
- (
instancetype
)initWithDict:(
NSDictionary
*)dict
{
self
= [
super
init
];
[
self
setValue
:dict[
@"title"
]
forKey
:
@"title"
];
self
.
carGroups
= [
SUNCar
carsWithArray
:dict[
@"cars"
]];
return
self
;
}
+ (
NSArray
*)carGroups
{
NSArray
*array = [
NSArray
arrayWithContentsOfFile
:[[
NSBundle
mainBundle
]
pathForResource
:
@"cars_total.plist"
ofType
:
nil
]];
NSMutableArray
*arrayM = [
NSMutableArray
array
];
for
(
NSDictionary
*dict
in
array) {
[arrayM
addObject
:[
self
carGroupsWithDict
:dict]];
}
return
arrayM;
}
最里层的数组
+ (
instancetype
)carWithDict:(
NSDictionary
*)dict
{
return
[[
self
alloc
]
initWithDict
:dict];
}
- (
instancetype
)initWithDict:(
NSDictionary
*)dict
{
self
= [
super
init
];
[
self
setValuesForKeysWithDictionary
:dict];
return
self
;
}
+ (
NSArray
*)carsWithArray:(
NSArray
*)array
{
NSMutableArray
*arrayM = [
NSMutableArray
array
];
for
(
NSDictionary
*dict
in
array) {
[arrayM
addObject
:[
self
carWithDict
:dict]];
}
return
arrayM;
}
二、懒加载
UITableView
- (
UITableView
*)tableView
{
if
(
_tableView
==
nil
) {
_tableView
= [[
UITableView
alloc
]
initWithFrame
:
self
.
view
.
bounds
style
:
UITableViewStylePlain
];
_tableView
.
dataSource
=
self
;
[
self
.
view
addSubview
:
_tableView
];
}
return
_tableView
;
}
三、实现代理方法
#pragma mark -
数据源方法
//
分组总数
- (
NSInteger
)numberOfSectionsInTableView:(
UITableView
*)tableView
{
return
self
.
carGroups
.
count
;
}
//
每一组的总数
- (
NSInteger
)tableView:(
UITableView
*)tableView numberOfRowsInSection:(
NSInteger
)section
{
HMCarGroup
*group =
self
.
carGroups
[section];
return
group.
cars
.
count
;
}
//
单元格
- (
UITableViewCell
*)tableView:(
UITableView
*)tableView cellForRowAtIndexPath:(
NSIndexPath
*)indexPath
{
//
可重用标示符
static
NSString
*ID =
@"Cell"
;
//
让表格缓冲区查找可重用
cell
UITableViewCell
*cell = [tableView
dequeueReusableCellWithIdentifier
:ID];
//
如果没有找到可重用
cell
if
(cell ==
nil
) {
//
实例化
cell
cell = [[
UITableViewCell
alloc
]
initWithStyle
:
UITableViewCellStyleDefault
reuseIdentifier
:ID];
}
//
设置
cell
内容
// 1>
取出数据模型
HMCarGroup
*group =
self
.
carGroups
[indexPath.
section
];
HMCar
*car = group.
cars
[indexPath.
row
];
// 2>
设置数据
cell.
imageView
.
image
= [
UIImage
imageNamed
:car.
icon
];
cell.
textLabel
.
text
= car.
name
;
return
cell;
}
//
标题
- (
NSString
*)tableView:(
UITableView
*)tableView titleForHeaderInSection:(
NSInteger
)section
{
//
找到
group
HMCarGroup
*group =
self
.
carGroups
[section];
return
group.
title
;
}
//
右侧索引列表
- (
NSArray
*)sectionIndexTitlesForTableView:(
UITableView
*)tableView
{
//
返回
self.carGroup
中
title
的数组
// NSMutableArray *arrayM = [NSMutableArray array];
// for (HMCarGroup *group in self.carGroups) {
// [arrayM addObject:group.title];
// }
// return arrayM;
// KVC
是
cocoa
的大招
//
用来间接获取或者修改对象属性的方式
//
使用
KVC
在获取数值时,如果指定对象不包含
keyPath
的
"
键名
"
,会自动进入对象的内部查找
//
如果取值的对象是一个数组,同样返回一个数组
//
NSArray
*array = [
self
.
carGroups
valueForKeyPath
:
@"
cars.name
"
];
return
[
self
.
carGroups
valueForKeyPath
:
@"title"
];
}
多组表格的思路
标签:
多组表格的思路
原文地址:http://blog.csdn.net/itcontend/article/details/41983289
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!