更改heightOfPrevious UITableViewCell

时间:2012-08-06 12:24:26

标签: iphone objective-c ipad uitableview

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath设置当前单元格的高度时,我是否可以更改上一个UITableViewCell的高度?

UITableView中有两行。在第一行时,它将设置默认高度。当在第二行时,我想要更改第一行的高度。这可能吗?如果是这样的话?

谢谢,
Bharathi。

3 个答案:

答案 0 :(得分:1)

如果满足要求,请尝试使用布尔检查。 你可以这样做:

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

    if (indexPath.row == 0 && !secondRowIsSynced) {
        return otherHeight ;
    }
    else {
        return defaultHeight;
    }
}

答案 1 :(得分:0)

bharathi:

您必须使用didSelectRowAtIndexPath的{​​{1}}方法重新加载表格。

您应检查是否已选中第二行,然后重新加载所有表行,以便再次调用所有UITableViewtableview delegate方法。

答案 2 :(得分:0)

我认为您误解tableView:heightForRowAtIndexPath:被多次调用(对于表中的每一行一次)。

如果您的行具有不同的高度,那么您需要确定您所在的行以及它应该具有的高度。

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

    if (0 == indexPath.row) {
        // This is the first row 
        height = // what ever you want
    } else if (1 == indexPath.row) {
        // This is the second row 
        height = // what ever you want
    }

    return height;
}

如果您后来确定一行需要不同的高度,那么仍然需要计算每行使用的正确高度的方法。您可以强制调用此方法而无需像这样重新加载tableView

[tableView beginUpdates];
[tableView endUpdates];