我想使用(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
}
答案 0 :(得分:4)
在获得单元格之前,您需要计算它的高度。你刚刚计算它的高度依赖于获取细胞。你已经创建了一个无限递归。
您可能需要找到另一种方法来进行计算,可能是通过检查您要添加到表格单元格的数据,而不是直接查询表格单元格。
另请注意,numberOfLines
表示文本标签能够显示的行数,但如果内容不足,则可能显示的行数较少。换句话说,即使它只显示一行文本,如果这是文本标签能够显示的最大行数,numberOfLines
将返回两行。
您可能需要使用其中一个NSString UIKit additions来计算要在单元格中显示的文本文本的高度。
答案 1 :(得分:0)
您是否在标签上设置了行数?因为这会给你一个默认答案,而不是与你正在使用的文字相匹配的行数......
我认为最可能的崩溃原因与textLabel有关。尝试在可执行文件的环境变量中将NSZombieEnabled设置为YES,并且日志将告诉您在释放后调用的对象类型...