使用 Swift 4.2 对常见的下拉筛选菜单进行封装
-
由于是用 Swift 4.2 语言写的,所以 oc 的项目使用的话,需要添加桥接文件,这个是新建 Swift 项目时,自动创建的,可不用理会手动创建
-
由于
ChXDropDownMenu.swift
用到了一个 oc 的工具类UICollectionViewLeftAlignedLayout
所以,需要在桥接文件xx-Bridging-Header.h
中,加入如下代码,引入这个类,方可正常使用#import "UICollectionViewLeftAlignedLayout.h"
-
ChXDropMenuData.json
:这个json文件内容是模拟数据的,用于流式标签的数据源,可根据项目需求自由更改,内容格式如下:[ { "childSubjectList" : [ { "childSubjectList" : [], "subjectId" : 4, "subjectName" : "19银行春招" }, { "childSubjectList" : [], "subjectId" : 3, "subjectName" : "19银行秋招" } ], "subjectId" : 2, "subjectName" : "银行" }, { "childSubjectList" : [ { "childSubjectList" : [], "subjectId" : 5, "subjectName" : "2018农信社" } ], "subjectId" : 1, "subjectName" : "农信社" }, { "childSubjectList" : [ { "childSubjectList" : [], "subjectId" : 9, "subjectName" : "期货从业" }, { "childSubjectList" : [], "subjectId" : 8, "subjectName" : "证券从业" }, { "childSubjectList" : [], "subjectId" : 7, "subjectName" : "银行职业" } ], "subjectId" : 6, "subjectName" : "金融资格证" }, { "childSubjectList" : [], "subjectId" : 11, "subjectName" : "测试" } ]
-
关于
ChXDropMenuViewModel
类: 这是一个处理菜单数据逻辑的类,对获取到的原始数据进行加工,封装成ChXDropDownMenu
需要的数据; 可根据实际需要修改此类中的方法,获取数据 -
此方法中封装了两种类型的菜单,一种我称之为
流式标签
ChXFlowTagsView,它是一个 collectionView , 存放了多个标签文字,可点击; 另一种我称为单行表格
ChXDropMenuTableView, 它就是一个普通的 tableView 。这个也可以根据实际需要添加新的类型的菜单,比较灵活