这是我现在面临的问题:
我有很多UITableViews,每个都有两个部分(根据需要,任何时候只显示一个)。第一部分有3个单元格,可能需要调整大小。因此,我正在使用heightForRowAtIndexPath。
第二部分最多可能有3.000个单元格,全部使用默认高度44点。
我的heightForRowAtIndexPath确定它是处理来自第1部分还是第2部分的单元格,然后测量(第1部分)或立即返回默认值(44第2部分)。
通过使用此方法,大型表视图需要一段时间才能显示,因为在这种情况下(大于大约1.000个单元格),heightForRowAtIndexPath是一个性能问题。
我的问题是: 有没有办法只调整第一部分中提出的3个单元格?任何方式可能强制只为indexPath.section == 0调用heightForRowAtIndexPath?
如果它有任何区别,我正在使用分组表视图。
感谢。
答案 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。
我可能会给每个人一个不同的委托,以避免在委托方法中进行大量切换,以确定你所在的部分。