[英]Height is 0 for table view cells that added by registering nib.
我有一个内置在单独的xib文件中的自定义UITableViewCell
,并通过调用将其动态添加到表视图中:
[self.tableview registerNib:theNib forCellReuseIdentifier:theIdentifier];
我在[tableView:heightForRowAtIndexPath:]
返回了高度,如下所示:
return ((UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:theIdentifier]).frame.size.height;
问题是,每次最高收益为0时。
无论如何,除了硬编码之外,是否可以正确返回高度(应该是xib文件中单元格的高度)?
事情是dequeueReusableCellWithIdentifier:方法正在尝试从现有的单元格(如果有)中获取一个单元格。 但是因为第一次调用此方法,所以没有创建任何单元格,它可能会返回nil,并且height的结果将为0。
此方法的所有其他调用将尝试使用现有的像元高度,但始终始终为0。
尝试做这样的事情:
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:theIdentifier];
if (!cell) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:nibForCellName owner:self option:nil];
for (id obj in nib) {
if ([obj isKindOfClass:[UITableViewCell class]]) {
cell = (UITableViewCell *) obj;
break;
}
}
}
return cell.frame.size.height;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.