我想使用 (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
自定义 UITableViewCell 高度。
我试图通过将 textLabel
中的行数乘以每行的高度然后添加 10.0f 来获取
为副标题。我正在使用以下代码并获取 UITableViewCell
的高度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/