我必须创建一个能够在不同级别显示和折叠行的表格视图(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来保存我可以通过动态密钥访问的数据(比如动态客户端名称),但我不确定这种方法是否真的可以解决实际问题(制作可折叠部分)。另外,我不确定是否只使用行并使它们看起来像标题部分或使用实际部分,因为据我所知,我不能使子部分实现三级嵌套。
有什么想法吗?我已经看到了可扩展行的项目示例,但我仍然感到困惑。
帮助!
答案 0 :(得分:3)
GitHub上的TLIndexPathTools库非常适合这类事情。为了演示,我整理了一个simple collapsible tree viewer component。它使用每个级别的单元格支持任何树深度。尝试运行"Outline" sample project。
树组件是一项正在进行的工作,但希望它应该是一个良好的开端。
答案 1 :(得分:0)
我认为嵌套词典对– tableView:cellForRowAtIndexPath:
不方便。
这是一个懒惰的解决方案:
使用伪装成行的NSMutableArray
和UITableView
部分。数组中的对象每个都有一个名为NSMutableArray
类型的子属性。展开父项时,清空子数组并将其插入父项后面。折叠时,继续将项目移动到子项中,直到它达到与父项相同级别的项目。
然后是动画:– insertRowsAtIndexPaths:withRowAnimation:
或– deleteRowsAtIndexPaths:withRowAnimation:
。 UITableViewRowAnimationTop
或UITableViewRowAnimationFade
看起来不错。