仅为表格中的最后一行设置不同的高度,是否有更有效的方法?

时间:2012-11-25 05:24:37

标签: ios uitableview

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

[self.tableView setRowHeight:40.0f];

但是如果我希望最后一行是不同的高度,我将实现委托方法heightForRowAtIndexPath,然后为所有索引路径调用它。这看起来非常昂贵,并且可能影响> 1000行数据的性能。

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

3 个答案:

答案 0 :(得分:1)

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

您应该始终首先使用自然框架方法并检查性能,而不是假设某些事情会变得缓慢并进行复杂的解决方法。就像男人说的那样,过早的优化和所有这一切。

另外,如果你的表中有超过1000行,你最好在侧面有一个索引,否则将无法使用。

答案 1 :(得分:0)

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

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

检查页脚视图是否符合您的要求。如果您不能使用页脚视图,则可能必须实现表视图的委托方法来设置问题中提到的行高。除非你在那里做一些昂贵的操作,否则它不会导致任何性能损失。

答案 2 :(得分: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;
}