如何使用多级可展开的可折叠行创建UITableView?
我要创建一个表视图(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来保存我可以通过动态密钥(如动态客户端名称)访问的数据,但我不确定这种方法实际上将解决实际问题(使可折叠部分) 。此外,我不确定是否只使用行,并使它们看起来像标题部分或使用实际部分,因为据我所知,我不能让子部分实现三层嵌套。
任何想法?我见过可扩展行的项目的例子,但我仍然感到困惑。
帮助!
我认为嵌套字典将不方便– tableView:cellForRowAtIndexPath:
。
这里是一个懒惰的解决方案:
使用NSMutableArray
和UITableView
与伪装,看起来像部分行。数组中的对象每个都有一个名为NSMutableArray
类型的子项的属性。展开父项时,请清空子数组并在父项之后插入它们。在折叠时,请将物品移动到儿童中,直到它碰到与父级相同级别的物品。
然后对于动画:– insertRowsAtIndexPaths:withRowAnimation:
或– deleteRowsAtIndexPaths:withRowAnimation:
。 UITableViewRowAnimationTop
或UITableViewRowAnimationFade
看起来不错。
GitHub上的TLIndexPathTools库非常适合这类事情。为了演示,我放了一个simple collapsible tree viewer component。它支持使用每个级别的单元格的任何树深度。尝试运行"Outline" sample project。
树组件是一个工作正在进行中,但希望它应该是一个好的开始。
我刚刚从git下载了源代码,并按照你的建议运行了Outline项目,它看起来不错,所有的东西,我都要潜入代码中,看看我能否使用一些类。谢谢! – Renexandro
看起来像一个非常实用的框架 – wuf810
嗯,这实际上是一个有趣的想法,但它可能需要一段时间才能确定它是否工作。所以让我研究这个概念。如果您想出更多的建议方法的细节或想法(可能是示例代码),请成为我的客人。谢谢! – Renexandro