UITableVIew中的最小和最大按钮功能

时间:2014-04-15 05:47:29

标签: objective-c ios7 xcode5

我想做min / max(展开/折叠)按钮功能。请看下面的图片了解更多信息。有人知道如何开发这个功能。我有一些例子,但那些不完全是我想要的。请帮我解决这个问题。

enter image description here

1 个答案:

答案 0 :(得分:0)

几天前我有类似的要求。我使用自定义tableview单元格完成了这项工作。

首先,您必须将每行的索引路径传递给单元格。为此,我已经在自定义tableview单元格中获取了一个属性。 即, @property(nonatomic,assign)NSIndexPath * indexPathOfCell;

现在,您必须在datasource方法中传递row的索引路径。

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

您必须在自定义tableviewcell中编写委托方法,以便当用户单击最小/最大按钮时,您可以通过此委托调用重新加载该单元格。

<强> - (无效)reloadCellWithIndexPath:(NSIndexPath *)indexPath;

您必须将视图控制器设置为要在其中填充表的自定义tableview单元格的委托。在那个类中,你必须维护一个NSMutableArray。

NSMutableArray * selectedIndexPaths;

reloadCellWithIndexPath 被调用时,您可以完全相同。

-(void)reloadCellWithIndexPath:(NSIndexPath*)indexPath{
    if(![selectedIndexPaths containsObject:indexPath]){
        [selectedIndexPaths addObject:indexPath];
    }else
        [selectedIndexPaths removeObject:indexPath];
    [tableView reloadData];
}

heightForRowAtIndexPath 方法中,您可以更改特定行的高度。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    BOOL cellModeChanged = NO;
    for (NSIndexPath *indexpath in selectedIndexPaths) {
        if(indexpath.section == indexPath.section && indexpath.row == indexPath.row)
            cellModeChanged = YES;
    }

    if(cellModeChanged)
        return 400.0;
    else
        return 100.0;
}