在UItableview中如何动态展开和折叠特定的TableviewCell

时间:2015-06-10 05:44:08

标签: ios

在我的应用中,我试图在Mkmapview中显示UITableView。当我点击单元格时,它必须展开并显示地图。然后,如果我点击另一个单元格,它应该再次展开并显示图库视图,前一个单元格必须折叠并且地图应该隐藏。

提前感谢,

1 个答案:

答案 0 :(得分:1)

您必须跟踪展开/折叠单元格的状态(或高度)。然后在tableView:heightForRowAtIndexPath:中报告该高度。然后添加以下代码以触发调整大小。

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

例如:

- (void)toggleMapCell {
    _mapCellExpanded = !_mapCellExpanded;
    if (_mapCellExpanded)
        _mapCellHeight = 200.0;
    else
        _mapCellHeight = 44.0;
    [self.tableView beginUpdates];
    [self.tableView endUpdates];
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([indexPath isEqualTo:_mapCellIndexPath])
        return _mapCellHeight;
    else
        return 44.0;
}

如果必须重新布置单元格的内容。我认为最好的地方是在单元格中layoutSubviews进行。