摘要
给大家分享一个自己写的基于UITableView的多级下拉选择列表(树形选择列表),支持到4级拓展,可多选、单选。
先上效果图吧
使用
导入头文件
1 |
导入数据的格式要求
像上面的电影分类的数据格式如下:
所有的电影以树形的格式存储,本质是一个 NSArray.
NSArray 里的每一个对象都是一个 NSDictionary.
每个 NSDictionary 都包含以下3个对象:
- key:(NSString *)id (每一个分类的唯一标识符,必须存在)
- key:(NSString *)name (分类的名称)
- key:(NSArray )subCategory (分类的子类数组,它的数据和上面的 *NSArray 相同,也就是循环嵌套来实现子类也有自己的子类)
可以想我在Demo里一样,将电影的数据先存为 .plist 文件。也可以手动代码去生成。
生成下拉列表
详细代码见demo
单选
1 | TreeSelectTableViewController *singleSelecteTableView; |
多选
1 | TreeSelectTableViewController *multiSelectTableView; |
关于样式的修改
- 目前版本不支持修改 cell 的 height ,如果需要改动可能需要自己修改源码。
- 在 image 目录下,可以自行替换图标。
- 关于数据源关键字的修改可以直接在 PrefixHeader.pch 文件下替换。
源码解析
model 目录下的 TreeDataSource 是做主要的数据操作。
controlller 目录下的 TreeSelectTableViewController 是根据 TreeDataSource 来控制列表控件。
目前可支持到4级目录的下拉,如果想支持多于4级的列表的,请找到 TreeDataSource.m 文件下的
1 | //递归获取类别id |
再做添加。
更详细的函数说明,变量说明,我都写在代码注释里面啦啦啦啦~~
源码地址
这里面的 TreeSelectTableView 文件是需要导入的SDK; TreeSelectTableViewDemo 是上面我写的使用演示demo。
最后
哈哈,在这样一个下雨天,分享了自己第一个源码,十分有气氛啊~以前自己也写了挺多像这样比较实用的自定义控件的,以后如果有机会都会开源的~代码有什么地方可以改进,欢迎提意见~