Tableview显示单元格的错误大小

时间:2013-09-04 12:44:54

标签: ios uitableview

表中的

我正在使用表格视图的(heightForRowAtIndexPath)委托设置单元格的高度 代码是:

  -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return  100;
}

但是我在委托方法(cellForRowAtIndexPath)中检查单元格的大小,代码是:

 - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Dequeue or create a cell
UITableViewCellStyle style =  UITableViewCellStyleDefault;
UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:@"BaseCell"];
if (!cell) 
    cell = [[UITableViewCell alloc] initWithStyle:style reuseIdentifier:@"BaseCell"] ;

cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", numberOfItems - indexPath.row];
    NSLog(@"%f",cell.frame.size.height);
 return cell;
  }

当我在控制台上打印值(细胞框架)细胞时,它给我44.00.为什么这种情况正在发生,即使我正在设置细胞的高度。请解释我以及如何处理细胞哦高度100。 。提前谢谢

实际上我想制作自定义类型表视图,它支持不同的视图方向,它是通用应用程序,所以最好每次调用单元格大小(iphone / ipad,diff orintation).... PLZ帮助我完成要求

3 个答案:

答案 0 :(得分:1)

如果正确显示单元格,并且正确地表示您在tableView:heightForRowAtIndexPath:中写入的高度为100像素,我很确定这是因为您要求单元格的高度为错误的地方: 单元格刚刚使用默认的init方法初始化,因此返回的高度是默认值,当控制台中的nslog提示为44像素时,渲染委托设置从方法返回的正确高度并设置所有内容正确。

几个月前我遇到过这个问题,由于某些原因我需要通过tableView:cellForRowAtIndexPath:方法知道单元格的高度,我为此提出了一个解决方法:我已将所有rowHeights值存储在{{1}中因为它们是动态的,并且根据它们的内容逐行排列。

我出现了像

这样的东西
  

CGFloat height = [[heightsData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

答案 1 :(得分:0)

您是否为UITableViewDelegate设置了委托?

首先尝试在tableView:heightForRowAtIndexPath:方法中添加任何日志,以查看您的代理是否已设置。

答案 2 :(得分:0)

朋友们开发了解释

  NSLog(@"%f",[self tableView:tableView heightForRowAtIndexPath:indexPath]);