使用方法:
1、先了解TableViewManager的使用方法。
2、建立自己的cell的时候,对应的item继承ZJExpandTreeCellItem
3、以下面代码为例,总共是4层(level 0 ~ level 3),第1层展开,第2层收起(所以实际上看不到3、4层,因为第2层是收起状态),第3层收起,第4层收起(最后一层),这样这个树形结构的列表就写好了。
// level 0
let item0 = Level0CellItem()
item0.title = "level0 默认自动处理展开事件"
// 默认是false,我这里需要第1级是展开状态,所以单独设置true
item0.isExpand = true
section.add(item: item0)
// level 1
for _ in 0 ..< 3 {
let item1 = Level1CellItem()
item0.addSub(item: item1, section: section)
// level 2
for _ in 0 ..< 3 {
let item2 = Level2CellItem()
item1.addSub(item: item2, section: section)
// level 3
for _ in 0 ..< 3 {
let item3 = Level3CellItem()
item2.addSub(item: item3, section: section)
}
}
}
展开和收起动作框架内会自动处理
ZJExpandTreeCellItem
属性的解释:
level |
当前cell的层级,不需要传值,只对外暴露了get方法。 |
isExpand |
当前cell是否是展开的。 |
isKeepStructure |
控制当前这一级在收起时是否会保持后面层级的树形结构。如果为false,点击0级收起,即使收起之前1,2级都是展开的,展开时1,2级都是收起状态 |
arrNextLeve |
保存的当前cell下的子一级cell。 |
toggleExpand() |
触发点击动作之后的展开收起动作的处理 |
recursionForItem(_: outItem:) |
通过递归获取到当前点击中的cell下面所有层级的cell |
其他使用方法:
1.自定义展开收起时机(如网络请求成功之后展开)
2.自定义展开按钮,不通过TableViewCell的点击事件响应
(这俩具体实现看Demo吧~代码注释已经写得很详细了)
Demo地址:在ZJTableViewManager中ExpandTree页面