我想使用 (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 制作自定义 UITableViewCell 高度。

我试图通过将 UITableViewCell 中的行数乘以每行的高度,然后为副标题添加 textLabel 来获得 10.0f 的高度。我正在使用以下代码并获取 exc_bad_access() 。为什么?

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return ([[[tableView cellForRowAtIndexPath:indexPath] textLabel] numberOfLines] * [[[[tableView cellForRowAtIndexPath:indexPath] textLabel] font] lineHeight]) + 10.0;
    //return kRowHeightiPod; //A constant value for a sanity check
}

最佳答案

在获得单元格之前,您需要计算它的高度。您刚刚计算了它的高度取决于获取单元格。你已经创建了一个无限递归。

您将需要找到另一种方法来进行计算,可能是通过检查您添加到表格单元格的数据,而不是直接查询表格单元格。

另请注意,numberOfLines 表示文本标签能够显示的行数,但如果内容不足,它可能会显示较少。换句话说,即使它只显示一行文本,如果这是文本标签能够显示的最大行数,numberOfLines 也会返回两行。

您可能想要的是使用 NSString UIKit additions 之一来计算要在单元格中显示的文本文本的高度。

关于iphone - 根据行数计算单元格高度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3859515/

10-12 07:32
查看更多