2011-04-05 109 views
5

我想要一个只有cels的表格视图,当你点击一个单元格时,它应该展开并显示点击单元格的更多信息。表格视图单元格可扩展iOS

我已经看到了这个颇有些话题,但他们中的大多数都链接到表视图动画和手势苹果开发者页面上。它以不同的方式进行。他们使用标题部分,但我想要使用可扩展的单元格用于布局原因。

我已经尝试几件事情主要是与

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

    if (isSearching && indexPath.row == selectedIndex) { 
     return 110; 
    } 
    else { 
     return rowHeight;  
    } 

当我点击细胞,细胞扩张,但单元格中的信息保持不变。此外,展开时单元格的高度应与细节中的文本数量相关。

Thnx!

+0

您是在单元格中实现layoutSubviews还是使用autoresizingMask? – David 2011-04-05 11:17:48

+0

nope?我需要这样做吗? – peter 2011-04-05 11:19:54

+0

是的,单元格内容不会自动调整大小。如果您更改其高度,则不会自动影响其子视图。如果设置了autoresizingMask,则子视图将相应调整大小。如果autoresizingMask不够,可以重写layoutSubviews以编程方式调整子视图的大小。 – David 2011-04-05 11:30:32

回答

9

您可以通过使用定制单元来实现这一目标。创建两个自定义单元格,一个用于普通行,另一个用于展开的行。当用户触摸特定的单元格时,可以记录它的indexPath并重新加载tableView。在重新加载时,您可以使用刚发布的代码(仅增加所选单元格的高度)更改所选行的高度。这会产生扩大细胞的效果。

+0

didSelectRowAtIndexPath方法会被称为为选定的单元。你可以在这里设置一个标志,当一个[tableView reloadData]完成时,这个标志可以被UITableViewDatSource方法再次引用。 – Vin 2011-04-05 10:25:11

+0

代码知道应该选择哪个自定义单元格?我是否在didSelectRowAtIndexPath中声明了这一点?并在哪条路上? – peter 2011-04-05 10:26:23

+0

当在tableView重载后再次调用cellForRowAtIndexPath时,可以使用调用它的单元格的标志来检查。然后,您可以使用新的自定义单元格重绘单元格,而将其他单元格像之前一样。 – Vin 2011-04-05 10:28:36