iOS:具有扩展单元格的TableView

时间:2012-10-09 19:16:48

标签: android iphone ios uitableview autolayout

我目前正在开发iOS版Android应用。在一个屏幕上,我有一系列行,点击后,展开以提供信息。

点击之前:

enter image description here


点击后:

enter image description here

如何在iOS中复制此行为?我不知道我是应该使用表视图还是只构建泛型UIViews。我正在使用自动布局。

3 个答案:

答案 0 :(得分:1)

您可以在特定的NSIndexPath上重新加载UITableVIewCell并计算单元格的新高度。

检查:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

来自UITableView

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

来自UITableViewDelegate

答案 1 :(得分:0)

只需为UITableView中的每个群组自定义标题浏览量即可。使用viewforheaderinsection方法执行此操作,然后返回UIButton。如果您点按该按钮,则应在此选定的组中插入UITableViewCells。我不能给你一个代码,因为我现在在Windows上,但这很简单。

UPD:请查看Apple的示例代码:http://developer.apple.com/library/ios/#samplecode/TableViewUpdates/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010139

答案 2 :(得分:0)

当您收到用于展开表格单元格的触摸事件时,请在表格控制器中使用以下调用

[self.tableView beginUpdates];
[self.tableView endUpdates];

虽然动画块为空,但调用beginUpdates endUpdates会导致表视图刷新单元格布局并为更改设置动画。这将导致您的表视图委托被重新查询 - 因此请确保在UITableViewDelegate中实现以下方法(通常您将此设置为UITableViewController):

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

确保此方法在收到触摸事件后返回适当的扩展单元格大小。结果将是一个很好的平滑细胞扩展动画:)