我有一个自定义UITableViewCell
内置在一个单独的xib文件中,我通过调用动态地将它添加到我的表视图中:
[self.tableview registerNib:theNib forCellReuseIdentifier:theIdentifier];
我在[tableView:heightForRowAtIndexPath:]
中返回了这样的高度:
return ((UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:theIdentifier]).frame.size.height;
问题是,每次高回报都是0.
无论如何都要正确地返回高度(应该是xib文件中单元格的高度)除了硬编码吗?
答案 0 :(得分:0)
事情是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;