1

我希望根据您在 Interface Builder 中设置自定义单元格的值动态设置单元格高度。这没有奏效,所以我继续前进并在 Apples 文档中找到了可用于设置单元格高度的此方法 - tableView:heightForRowAtIndexPath:

但是我不确定我是否正确使用它,因为我的 tableviewcells 都没有调整它们的高度,它们都保持相同的标准尺寸。这是我在这里使用的代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Set cell height
    [self tableView:tableView heightForRowAtIndexPath:indexPath];

    // Configure the cell using custom cell
    [[NSBundle mainBundle] loadNibNamed:@"CustomcellA" owner:self options:nil];
    cell = customcellA; // customcellA getters and setters are set up in .h

    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 44;
}

任何帮助将不胜感激

4

2 回答 2

7

假设第三个单元格是高度的两倍:

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

这个方法会被tableView调用。

你不应该这样做:

[self tableView:tableView heightForRowAtIndexPath:indexPath];

如何确保正确单元格的 indexPath 被识别为其他大小取决于您自己。

一般规则:
如果你实现了委托协议的方法,你永远不会自己调用它。只有具有符合协议的委托的类的对象才会调用委托方法。

于 2012-05-16T21:49:16.990 回答
0

heightForRowAtIndexPath 将被自动调用,您需要返回您需要的自定义高度。因此,除了返回 44 之外,您还需要根据您的数据或您的身高所依据的任何内容返回一个动态高度。

于 2012-05-16T21:46:08.723 回答