2013-05-28 46 views
4

我要创建一个表视图(iPad版),即能显示,不同层次的崩溃行:如果用户点击一个客户排如何使用多级可展开的可折叠行创建UITableView?

- 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来保存我可以通过动态密钥(如动态客户端名称)访问的数据,但我不确定这种方法实际上将解决实际问题(使可折叠部分) 。此外,我不确定是否只使用行,并使它们看起来像标题部分或使用实际部分,因为据我所知,我不能让子部分实现三层嵌套。

任何想法?我见过可扩展行的项目的例子,但我仍然感到困惑。

帮助!

回答

0

我认为嵌套字典将不方便– tableView:cellForRowAtIndexPath:

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

使用NSMutableArrayUITableView与伪装,看起来像部分行。数组中的对象每个都有一个名为NSMutableArray类型的子项的属性。展开父项时,请清空子数组并在父项之后插入它们。在折叠时,请将物品移动到儿童中,直到它碰到与父级相同级别的物品。

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

+0

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

3

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

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

+0

我刚刚从git下载了源代码,并按照你的建议运行了Outline项目,它看起来不错,所有的东西,我都要潜入代码中,看看我能否使用一些类。谢谢! – Renexandro

+0

看起来像一个非常实用的框架 – wuf810

相关问题