美文网首页
较为美观的多级列表

较为美观的多级列表

作者: 鞋底没纹易摔跤 | 来源:发表于2017-08-16 16:48 被阅读26次

先看界面

较为美观的多级展开.gif

一级列表主要用的自定义的UITableViewHeaderFooterView,二级列表和三级列表则采用自定义的cell。该控件可以扩展第四级,第五级等,但需要修改代码以及数据源,这个可以自己参考代码修改。

界面代码较为简单,这里就不展示了,展示主要的代码。

记录展开的核心代码

    func expandNodes(section : Int, parentID:String,index:Int)->Int{
        
        var insertindex = index
        
        for i in 0..<companys[section].subNodes.count {
            let node = companys[section].subNodes[i]
            //找到父节点是parentID的子节点
            if node.parentID == parentID {
                if !self.preservation {  //是否保留所有子cell的展开状态
                    node.expand = false
                }
                //展开节点的后面+1的位置
                insertindex += 1
                //根据展开顺序排列
                tempNodes[section].insert(node, at: insertindex)
                //存储插入的位置
                reloadArray.append(IndexPath(row: insertindex, section: section))
                //遍历子节点的子节点进行展开
                if node.expand {
                    insertindex = expandNodes(section : section, parentID: node.ownID, index: insertindex)
                }
            }
        }
        return insertindex
    }

记录收起的数据

func foldNodes(section : Int,level:Int,currentIndex:Int){
        if currentIndex+1<tempNodes[section].count {
            
            let tempArr = NSArray(array: tempNodes[section])
            
            let startI = currentIndex+1
            var endI   = currentIndex
            for i in (currentIndex+1)..<(tempArr.count) {
                let node = tempArr[i] as! MLNodelObj
                if node.level <= level {
                    break
                }else{
                    endI += 1
                    reloadArray.append(IndexPath(row: i, section: section))
                }
            }
            if endI >= startI {
                tempNodes[section].removeSubrange(startI...endI)
            }
        }
    }

Code4App地址:http://www.code4app.com/forum.php?mod=viewthread&tid=14656&extra=
github地址:https://github.com/ljmkimqx/LJMMultiLevelTableView

参考来源:
http://www.jianshu.com/p/a040ff9e3ae3

相关文章

网友评论

      本文标题:较为美观的多级列表

      本文链接:https://www.haomeiwen.com/subject/xvwtlxtx.html