0

除最后一行外,所有行在表中的高度相同。如果我们忘记了最后一行,在正常情况下,我会像这样设置表格视图的高度:

[self.tableView setRowHeight:40.0f];

但是,如果我希望最后一行的高度不同,我将实现委托方法heightForRowAtIndexPath,然后为所有索引路径调用该方法。这似乎相当昂贵,并且可能会影响超过 1000 行数据的性能。

我没有看到任何其他方式,但会保持乐观,直到我得到反馈。

4

3 回答 3

1

如果您只返回一个或另一个高度,基于单个 if 语句,它可能不会那么昂贵。方法调用非常便宜。如果您正在执行一些计算(通常,根据一行中的文本长度计算可变高度),那么您会看到性能下降。该方法仅在重新加载 tableView 时调用,因此滚动性能不会成为问题。

您应该始终首先使用自然框架方法并检查性能,而不是假设某些事情会很慢并做出复杂的解决方法。就像那个人说的,过早的优化等等。

此外,如果您的表中有超过 1000 行,则最好在旁边有一个索引,否则将无法使用。

于 2012-11-25T07:55:42.887 回答
0

实现表格的页脚视图并实现委托,

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;

检查页脚视图是否可以满足您的要求。如果您不能使用页脚视图,则可能必须实现表格视图的委托方法来设置行高,如您的问题中所述。除非您在那里进行一些昂贵的操作,否则它不会对性能造成任何影响。

于 2012-11-25T05:28:56.300 回答
0
No you can implement this by specifying different height for different rows as per your requirement.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == [YourArray count]-1)
    {

        return CustomHeightYouNeedForYourCell;
    }

    return DefaultheightForAllCells;
}
于 2012-11-25T05:41:45.337 回答