我们可以在UITableView中更改当前行的高度吗?

时间:2013-05-13 10:42:28

标签: ios uitableview

一个非常简单的问题......

我们可以在UItableView中更改当前行(被点击的行)的高度吗?

注意:我不希望对剩余行的大小产生任何影响。

4 个答案:

答案 0 :(得分:7)

是的,你可以。您需要一个保留最后一个选定行的变量。例如:

@property (nonatomic, assign) NSInteger selectedRow;

... 然后实现方法

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(indexPath.row == self.selectedRow) {
        return 100.;
    }

    return 44.;
}

然后,更新方法:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    if(self.selectedRow == indexPath.row)
        self.selectedRow = -1;
    else
        self.selectedRow = indexPath.row;

    //The magic that will call height for row and animate the change in the height
    [tableView beginUpdates];
    [tableView endUpdates];
}

注意:在开头使用self.selectedRow值初始化-1,默认值为0

答案 1 :(得分:1)

您可以使用heightForRowAtIndexPath来设置行的高度

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

您可以对NSIndexPath进行检查,然后针对特定height

返回indexpath

答案 2 :(得分:0)

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(indexPath.row == rowtochangeheight) {
        return 60;
    }
    else
    {
        return 44;
    }


}

答案 3 :(得分:0)

是的,你可以这样做,但你需要保存所选行的索引路径,你必须按负值初始化selectedRow变量。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    selectedRow = indexpath.row;
    [tblView reloadData];
}

- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == selectedRow)
        return 150.0f;

    return 30;
}