繁体   English   中英

通过注册笔尖添加的表视图单元格的高度为0。

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM