3

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

我试图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
}
4

2 回答 2

4

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

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

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

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

于 2010-10-04T22:24:47.183 回答
0

您是否在标签上设置了行数?因为这会给你一个默认的答案,而不是与你正在使用的文本匹配的行数......

我会说最可能导致崩溃的原因与 textLabel 有关。尝试在可执行文件的环境变量中将 NSZombieEnabled 设置为 YES,日志会告诉你释放后调用的是哪种对象...

于 2010-10-05T00:24:50.203 回答