时间:2010-07-06 18:52:23

标签: iphone uitableview

这是我现在面临的问题:

我有很多UITableViews,每个都有两个部分(根据需要,任何时候只显示一个)。第一部分有3个单元格,可能需要调整大小。因此,我正在使用heightForRowAtIndexPath。

第二部分最多可能有3.000个单元格,全部使用默认高度44点。

我的heightForRowAtIndexPath确定它是处理来自第1部分还是第2部分的单元格,然后测量(第1部分)或立即返回默认值(44第2部分)。

通过使用此方法,大型表视图需要一段时间才能显示,因为在这种情况下(大于大约1.000个单元格),heightForRowAtIndexPath是一个性能问题。

我的问题是: 有没有办法只调整第一部分中提出的3个单元格?任何方式可能强制只为indexPath.section == 0调用heightForRowAtIndexPath?

如果它有任何区别,我正在使用分组表视图。

感谢。

2 个答案:

答案 0 :(得分:10)

如果在您的委托中实现了

heightForRowAtIndexPath,则会调用它。如果您只想更改第一部分中的值,那么只需使用简单的if语句即可。这看起来像是:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    // Test to see what section you're in
    if ([indexPath section] == 0) {
        // return the height for the first section
    } else {
        // return the height for everything other than the first section
    }
}

干杯。

答案 1 :(得分:0)

为什么不只使用2个表格视图 - 一个用于顶部,一个用于第二部分?

您可以为每个UITableView提供不同的委托,或者如果他们共享委托,您可以立即从heightForRowAtIndexPath返回底部的UITableView。

我可能会给每个人一个不同的委托,以避免在委托方法中进行大量切换,以确定你所在的部分。