4

我必须创建一个能够在不同级别显示和折叠行的表格视图(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 来保存我可以通过动态键(如动态客户端名称)访问的数据,但我不确定这种方法是否真的能解决实际问题(制作可折叠部分)。另外,我不确定是只使用行并使它们看起来像标题部分还是使用实际部分,因为据我所知,我无法制作子部分来实现三层嵌套。

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

帮助!

4

2 回答 2

3

GitHub 上的TLIndexPathTools库非常适合这类事情。为了演示,我组装了一个简单的可折叠树查看器组件。它支持使用每个级别的单元格的任何树深度。尝试运行“大纲”示例项目

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

于 2013-05-28T06:54:37.077 回答
0

我认为嵌套字典对于– tableView:cellForRowAtIndexPath:.

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

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

然后对于动画:– insertRowsAtIndexPaths:withRowAnimation:– deleteRowsAtIndexPaths:withRowAnimation:。要么UITableViewRowAnimationTop看起来UITableViewRowAnimationFade不错。

于 2013-05-28T05:45:38.903 回答