Swift TableView多级展开(支持动画、无限层级)

静态效果
动图演示

使用方法:
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)
                }
            }
        }

展开和收起动作框架内会自动处理

Screen Shot 2020-04-15 at 4.45.54 PM.png

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页面

你可能感兴趣的:(Swift TableView多级展开(支持动画、无限层级))