Ios 如果实现heightForRowAtIndexPath,则单元格内容不会显示

Ios 如果实现heightForRowAtIndexPath,则单元格内容不会显示,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我使用的是iOS9.2和XCode 7.2 我有一个基本的UITableView对象,我在其中添加了不同类型的UITableViewCell子类 对于其中一个,当我手动设置高度覆盖方法heightforrowatinexpath时,我不会在单元格上获取任何内容 如果我将-1返回为高度(UITable行高度的默认值),我将正确显示单元格。问题是,我确实需要一个不同的高度为这一行,因为内容是相当大的 以下是RowAtIndexPath的高度代码: - (CGFloat)tableView:(UITa

我使用的是iOS9.2和XCode 7.2

我有一个基本的
UITableView
对象,我在其中添加了不同类型的
UITableViewCell
子类

对于其中一个,当我手动设置高度覆盖方法
heightforrowatinexpath
时,我不会在单元格上获取任何内容

如果我将
-1
返回为高度(UITable行高度的默认值),我将正确显示单元格。问题是,我确实需要一个不同的高度为这一行,因为内容是相当大的

以下是RowAtIndexPath的高度代码:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MenuItem *menuItem = [menuManager menuItemAtIndex:indexPath.row];
    if ([menuItem type] == MenuItemTypeEditorHeader) {
        return 100;
    } else {
        return [super tableView:tableView heightForRowAtIndexPath:indexPath];
    }
}

MenuItem
是一个包含特定菜单对象信息的类,例如类型。结果是单元格显示在正确的高度,但它是空的

HeightForRowAtIndexPath
仅返回行的高度。因此,
cellforrowatinexpath
中可能存在问题

HeightForRowAtIndexPath
仅返回行的高度。因此,
cellforrowatinexpath
中可能存在问题

您正在调用
tableView.reloadData()


在调用
tableView.reloadData()

之前打印菜单对象的长度。是否调用
tableView.reloadData()


在调用
tableView.reloadData()
之前,请先打印菜单对象的长度。不建议再使用
heightforrowatinexpath
,这是老生常谈。相反,请执行以下操作:

  • 在单元格中设置自动布局约束(如果您不知道如何-您需要,这是您无法避免的!)
  • 表格视图
    上为要使用的autolayout创建一个
    estimatedRowHeight
    。您可以在nib/storyboard中设置它,也可以在eg的
    viewDidLoad
    中以编程方式设置它,如下所示:
  • self.tableview.estimateDroweight=68.0

  • 将您的
    tableview
    设置为使用“自动标注”,如下所示:

    self.tableview.rowHeight=UITableViewAutomaticDimension


  • 就这样。如果您执行这些操作,那么单元格的高度将根据其约束条件而变化。因此,如果您的一个子类由于其约束而具有150px的高度,那么它将在另一个子类具有50px高度的情况下完美地工作。您还可以根据单元格的内容动态改变单元格的高度,例如,当标签使用“大于或等于”约束展开时。此外-只需省略“
    heightforrowatinexpath
    ”方法,您根本不需要实现它。

    不建议再使用
    heightforrowatinexpath
    ,这是老生常谈。相反,请执行以下操作:

  • 在单元格中设置自动布局约束(如果您不知道如何-您需要,这是您无法避免的!)
  • 表格视图
    上为要使用的autolayout创建一个
    estimatedRowHeight
    。您可以在nib/storyboard中设置它,也可以在eg的
    viewDidLoad
    中以编程方式设置它,如下所示:
  • self.tableview.estimateDroweight=68.0

  • 将您的
    tableview
    设置为使用“自动标注”,如下所示:

    self.tableview.rowHeight=UITableViewAutomaticDimension


  • 就这样。如果您执行这些操作,那么单元格的高度将根据其约束条件而变化。因此,如果您的一个子类由于其约束而具有150px的高度,那么它将在另一个子类具有50px高度的情况下完美地工作。您还可以根据单元格的内容动态改变单元格的高度,例如,当标签使用“大于或等于”约束展开时。另外-只需省略“
    heightforrowatinexpath
    ”方法,您根本不需要实现它。

    您可以添加heightforrowatinexpath方法的代码吗?添加部分代码。这样我们可以更好地解释您。为什么添加这一行[super-tableView:tableView-heightforrowatinexpath:indexath]@RohitKP如果你是对的,它是无用的扫描你请添加HeightForRowatineXpath方法的代码?添加部分代码。这样我们可以更好地解释您。为什么添加这一行[super-tableView:tableView-heightforrowatinexpath:indexath]@RohitKP你是对的,没用