源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

iOS多级列表实现代码

  • 时间:2020-01-11 12:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:iOS多级列表实现代码
在项目开发中,层级列表经常遇到,简单点的二级列表利用UITableView的Header就可以实现,再简单点的三级列表通过对Cell高度进行调整也可以实现三级列表的效果。但遇到多级列表,尤其是层次不明的动态列表就比较麻烦了。 [b]原理[/b] 层级列表和树形结构比较类似,不过不是二叉树,而是多叉树。每个节点只需要拥有指向父节点和子节点的两个指针,就能形成一颗树。我们将多级列表中每一级对象看作一个node,node拥有两个属性,分别为父节点和子节点的ID。 每棵树有个一个虚拟的root节点,它的ID为rootID,所有节点中凡是父节点ID为rootID的便是第一级,对应树结构中的depth(深度)。这样每一个node对象就都拥有了parentID和childrenID, childrenID为node对象的ID。 我们可以通过rootID查出第一级node,再根据第一级node的childrenID查出下一级,依次类推,确定所有节点的父子关系。同时也可以确定叶子节点和第一级节点,也可称 为根节点。 [b]效果图[/b] 1.一般多级列表 [img]http://files.jb51.net/file_images/article/201609/2016919162439853.jpg?2016819162448[/img] 2.记录节点历史状态的列表 [img]http://files.jb51.net/file_images/article/201609/2016919162504270.jpg?2016819162511[/img] [b]思路 [/b] 1.首先根据 rootID 获取所有第一级节点,并放入UITableView的数据源 dataSourceArr 中,展示初始化列表 2. 展开: 点击节点cell,根据 childrenID 查找下一级nodes,并插入到 dataSourceArr 中currentNode的后面,刷新展示 3. 收拢: 点击以打开节点cell,从 dataSourceArr 的CurrentIndex+1开始,如果该节点的level小于currentNode的level,则移除node,否则停止刷新列表。 4.点击cell为叶子节点则不响应展开或收拢操作,并把节点信息通过返回。 dataSourceArr中是这样的一种符合树层级结构的顺序: [img]http://files.jb51.net/file_images/article/201609/2016919162525919.jpg?2016819162532[/img] 定义节点对象 [img]http://files.jb51.net/file_images/article/201609/2016919162545917.jpg?2016819162552[/img] [b]遇到问题 [/b] [b]1.局部刷新的问题[/b] 每次展开或收拢以后刷新列表,一开始采用
[url=https://github.com/YangKa/YKMutableLevelTableView.git]https://github.com/YangKa/YKMutableLevelTableView.git[/url] 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部