0

我需要从 tableView:cellForRowAtIndexPath 方法中获取 tableView 单元格的高度。

例如,我将行的高度设置tableView:heightForRowAtIndexPath为返回 200。然而tableView:cellForRowAtIndexPath,当我NSLog(@"cell height: %f", cell.contentView.frame.size.height);没有得到 200 时,我得到的默认单元格高度为 44.0。然而,单元格的大小在模拟器中是视觉上正确的。必须有一种方法可以heightForRowAtIndexPath直接获取指定的大小,而无需我将其存储在单独的变量中 - 不是吗?

4

2 回答 2

1

你可以在tableView:cellForRowAtIndexPath.

这是一个例子:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   CGFloat cellHeight = [self tableView:self.tableView heightForRowAtIndexPath:indexPath];
}
于 2012-08-30T18:25:21.230 回答
1

tableView:heightForRowAtIndexPath:视图仅使用它来确定表视图中每个单元格的垂直位置、滚动指示器的大小等。

但是在tableView:cellForRowAtIndexPath:您负责创建具有相同高度的单元格时,可以通过frame在 NIB/Storyboard 文件中设置或定义具有正确高度的单元格。

这两种方法是独立的。创建高度为 的单元格并没有什么神奇之处 tableView:heightForRowAtIndexPath:。如果您创建一个更大的单元格,那么这个单元格将与表格视图中的下一个单元格重叠。

所以你可以调用你自己的tableView:heightForRowAtIndexPath:方法(我只是看到@Larcus94 确实建议了这个)。

但是,如果表格中所有单元格的高度相同,则单独的常数会更有效。

于 2012-08-30T18:35:11.163 回答