我目前在编码中面临一个大问题,但我找不到任何解决方案。
正如您在这里看到的,我想创建一个可扩展的表格视图:
- 类别分为 2 个部分
- 子类别
我的意思是,如果您点击“2A”,“2A-1”、“2A-2”等列表就会展开。如果点击“2B”,则出现“2B-1”、“2B-2”列表,以此类推。
你觉得我能怎么办?
我目前在编码中面临一个大问题,但我找不到任何解决方案。
正如您在这里看到的,我想创建一个可扩展的表格视图:
我的意思是,如果您点击“2A”,“2A-1”、“2A-2”等列表就会展开。如果点击“2B”,则出现“2B-1”、“2B-2”列表,以此类推。
你觉得我能怎么办?
我已经在一些产品中编写了这种性质的解决方案。完成此操作的代码有点广泛,因此我将为您提供一个高级概述。
将每个“行”创建为一个部分。显然,为了使每个节标题实际上看起来像一行,重写viewForHeaderInSection
等等。
让您的视图控制器保存一个数组,其中包含展开的部分(未展开的部分是折叠的)
在 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
检查节是否展开,如果是,则返回子项数,否则返回0。
因此,cellForRowAtIndexPath 总是只返回子项,而 viewForHeaderInSection 总是返回父项。
当用户单击标题单元格时,切换部分扩展标志,并reloadSections:withRowAnimation:
获得漂亮的动画过渡
请注意,由于在 IOS6 之前,总是重新创建节标题并且从不缓存,因此性能不是很好。使用 IOS6,这个问题也得到了解决,因为它也回收了标题单元格。
对于可扩展单元,您可以使用VPPDropDown类,我自己使用它,很好:)