【问题标题】:How to create UITableView with multilevel expandable collapsible rows? [closed]如何创建具有多级可扩展可折叠行的 UITableView? [关闭]
【发布时间】:2013-05-22 22:02:26
【问题描述】:

我必须创建一个能够在不同级别显示和折叠行的表格视图(iPad 应用程序):

- Client 1
 - Category 1
  - Info 1
  - Info 2
 - Category 2
  - Info 1
  - Info 2
 - Category 3
  - Info 1
  - Info 2
- Client 2
 - Category 1
  - Info 1
  - Info 2

等等……

如果用户点击客户端行,则整个客户端相关行(该客户端下的类别和信息)应展开/折叠。另一方面,如果他们点击特定类别,则只有该类别应该展开/折叠。

所以我计划嵌套 NSMutableDictionaries 来保存我可以通过动态键(如动态客户端名称)访问的数据,但我不确定这种方法是否真的能解决实际问题(制作可折叠部件)。另外,我不确定是只使用行并使它们看起来像标题部分还是使用实际部分,因为据我所知,我无法制作子部分来实现三层嵌套。

有什么想法吗?我已经看到了具有可扩展行的项目示例,但我仍然感到困惑。

救命!

【问题讨论】:

    标签: uitableview rows expand collapse sections


    【解决方案1】:

    我认为嵌套字典对于– tableView:cellForRowAtIndexPath: 会很不方便。

    这是一个懒惰的解决方案:

    使用NSMutableArrayUITableView 将行伪装成部分。数组中的每个对象都有一个名为 NSMutableArray 类型的 children 的属性。展开父项时,清空子数组并将它们插入父项之后。折叠时,继续将项目移动到子项中,直到它碰到与父项处于同一级别的项目。

    然后对于动画:– insertRowsAtIndexPaths:withRowAnimation:– deleteRowsAtIndexPaths:withRowAnimation:UITableViewRowAnimationTopUITableViewRowAnimationFade 看起来都不错。

    【讨论】:

    • 嗯,这实际上是一个有趣的想法,但可能需要一段时间才能确定它是否有效。所以让我研究一下这个概念。如果您提出建议的方法的更多细节或想法(可能是示例代码),请成为我的客人。谢谢!
    【解决方案2】:

    GitHub 上的 TLIndexPathTools 库非常适合这类事情。为了演示,我整理了一个simple collapsible tree viewer component。它支持使用每个级别的单元格的任何树深度。尝试运行"Outline" sample project

    树组件正在进行中,但希望它应该是一个好的开始。

    【讨论】:

    • 我刚刚从 git 下载了源代码并按照您的建议运行了 Outline 项目,它看起来不错,一切都很好,我将不得不深入研究代码,看看我是否可以使用一些类它。谢谢!
    • 看起来很实用的框架
    猜你喜欢
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多