展开UITableViewstylePlain中的UITableView单元格

我想扩大桌面单元的点击。 有一个tableview,其中两个单元格是可扩展的,其他单元格不是。 我需要当我点击可扩展的单元格时,它应该显示它下面的单元格,再次点击它应该隐藏。 下面有一个图像定义这个。

在这里输入图像说明

我怎样才能实现这个function,请指导以上。 提前致谢。

这里是可扩展的UITableView的完整教程

这是代码片段。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if ([self tableView:tableView canCollapseSection:indexPath.section]) { if (!indexPath.row) { // only first row toggles exapand/collapse [tableView deselectRowAtIndexPath:indexPath animated:YES]; NSInteger section = indexPath.section; BOOL currentlyExpanded = [expandedSections containsIndex:section]; NSInteger rows; NSMutableArray *tmpArray = [NSMutableArray array]; if (currentlyExpanded) { rows = [self tableView:tableView numberOfRowsInSection:section]; [expandedSections removeIndex:section]; } else { [expandedSections addIndex:section]; rows = [self tableView:tableView numberOfRowsInSection:section]; } for (int i=1; i<rows; i++) { NSIndexPath *tmpIndexPath = [NSIndexPath indexPathForRow:i inSection:section]; [tmpArray addObject:tmpIndexPath]; } UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; if (currentlyExpanded) { [tableView deleteRowsAtIndexPaths:tmpArray withRowAnimation:UITableViewRowAnimationTop]; cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeDown]; } else { [tableView insertRowsAtIndexPaths:tmpArray withRowAnimation:UITableViewRowAnimationTop]; cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeUp]; } } } } 

如下图所示

在这里输入图像说明

这个和这个解决scheme也帮助你理解如何pipe理Expandable TableView

好吧,我在想的是,标题, 事件开销朋友将是UIImageView为背景的自定义UIViewUILabel为标题和UIButton为展开。 所以基本上

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

有你的标题返回计数。

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

有每个标题返回UIView

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

对该标题内的行进行计数。 你可能需要为此维护一个数组。

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 

具有细胞物品的高度

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 

所有部分最初应为0(零),当用户点击展开时,应该相对于该部分内的行数*单元高度增加。

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

您可能需要一些良好的逻辑来设置所有行进行扩展

你的扩展button的行动就像,

 - (void) expandSection:(UIButton *)sender; 

您可以确定使用sender.tag展开哪一部分,所以不要忘记正确添加标签。 您可能需要在.h文件中存放当前段的int ,并且可以在- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section数据源方法。

我想你想要的是苹果已经给的。 你可以看看苹果提供的示例代码下的表视图animation和手势的标题。

我已经给出了下面的示例源代码。 您可以根据您的要求自定义此示例。

源代码链接: 点击这里

输出屏幕:

在这里输入图像说明

JKExpandTableView是MIT许可的iOS库,实现了可扩展的表格视图 。 一定要检查包含的示例项目。

截图

这是由代表可能的

 - (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath { //write code here } 

被接受的答案是正确的,但链接已经过时。 为了让这个例子起作用,你必须做更多的事情:

从这里下载ExpandableTableCells项目:
https://github.com/cocoanetics/Examples

从这里下载DTCustomColoredAccessory.h和.m文件: https : //github.com/Cocoanetics/DTFoundation/tree/develop/Core/Source/iOS

将DTCustomColoredAccessory文件放在ExpandableTableCells项目中。

在这里你有一个工作的例子,编辑和从那里移动,而不是试图从零写入更容易。