计算自定义UITableViewCell高度为;indexath";from-tableView:cellForRowAtIndexPath:?
我在自定义类中调整自定义计算自定义UITableViewCell高度为;indexath";from-tableView:cellForRowAtIndexPath:?,uitableview,heightforrowatindexpath,Uitableview,Heightforrowatindexpath,我在自定义类中调整自定义UITableViewCell的高度,我认为需要使用-tableView:cellforrowatinexpath:方法来调整单元格的高度。我试图在自定义单元格类中调整自定义单元格的高度,然后在给定的索引路径处获取单元格并将其强制转换,然后返回该单元格的高度,如下所示: - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; {
UITableViewCell
的高度,我认为需要使用-tableView:cellforrowatinexpath:
方法来调整单元格的高度。我试图在自定义单元格类中调整自定义单元格的高度,然后在给定的索引路径处获取单元格并将其强制转换,然后返回该单元格的高度,如下所示:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
CustomUITableViewCell *cell = (CustomUITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
return cell.frame.size.height;
}
但是我的堆栈溢出了。做这件事的更好方法是什么?如果是情节提要单元,您可以调用
dequeueReusableCellWithIdentifier:
。否则,您可以直接使用类似于[CustomUITableViewCell alloc]initWithFrame:
的内容实例化单元格
我自己使用这种方法(使用一个原型单元来计算高度),因为它允许我们的设计师修改故事板单元,而无需更改代码
您可能需要根据所讨论的高度是静态还是动态来调整方法。表视图
委托将首先调用heightforrowatinexpath:
,然后数据源将根据计算出的信息在cellforrowatinexpath:
中构造单元格
因此,您的方法将不起作用
你需要有一些逻辑来计算高度。(例如,如果您正在显示文本,高度可能是动态的,并且取决于文本的数量-您可以使用NSString
方法计算高度。)
如果只是显示几种具有固定高度的单元格,只需将这些高度定义为常量,并根据cellforrowatinexpath:
中的相同逻辑返回正确的高度,以决定使用哪个单元格
#define kBasicCellHeight 50
#define kAdvancedCellHeight 100
- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (needToUseBasicCellAtThisIndexPath) {
return kBasicCellHeight;
}
return kAdvancedCellHeight;
}
我想说@Mundi的建议更好/更简单,除非(a)您希望在不更改代码的情况下修改故事板中的单元高度,或者(b)您的单元需要计算其高度/布局,并且您不希望在视图控制器中复制该逻辑。