Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableViewCell自动行高在异步调用后不起作用_Ios_Uitableview_Uitableviewautomaticdimension - Fatal编程技术网

Ios UITableViewCell自动行高在异步调用后不起作用

Ios UITableViewCell自动行高在异步调用后不起作用,ios,uitableview,uitableviewautomaticdimension,Ios,Uitableview,Uitableviewautomaticdimension,我已成功使自定义uitableviewcell与自动标注一起工作。在我的自定义单元格中,我有一个标签(用于显示标题,可以是单行或多行)和一个imageview。自动布局设置正确,我指定了估计行高,并将行高设置为自动标注。当我使用在viewDidLoad中设置的虚拟数据时,我的自定义单元格根据UILabel文本动态更改高度 但是,我必须在自定义tableviewcell类中进行API调用,即在CellForRowatineXpath方法中进行调用,以获取要显示在UILabel和UIImageVie

我已成功使自定义uitableviewcell与自动标注一起工作。在我的自定义单元格中,我有一个标签(用于显示标题,可以是单行或多行)和一个imageview。自动布局设置正确,我指定了估计行高,并将行高设置为自动标注。当我使用在viewDidLoad中设置的虚拟数据时,我的自定义单元格根据UILabel文本动态更改高度

但是,我必须在自定义tableviewcell类中进行API调用,即在CellForRowatineXpath方法中进行调用,以获取要显示在UILabel和UIImageView中的相应数据。成功获取数据后,我更新UI元素。但是,在这种情况下,单元格不会动态更改高度,并且我的UILabel会被截断为一行


我曾尝试调用reloadRowsAtIndexPath方法,但当我滚动tableview时,它会导致奇怪的反弹。我已经试了好几个小时了,在从API调用中获取数据后,是否知道如何使自动tableview行高工作?

检查您是否遵循了这些操作

  • self.tableView.rowHeight=UITableViewAutomaticDimension self.tableView.estimateDroweight=50//将此值设置为对您有效的任何值

  • 将标签的行数设置为0(最重要)

  • 如果为标签指定了任何高度约束,请删除

  • 在cellForRow上返回单元格时,请尝试执行此操作

    cell.contentView.setNeedsLayout() cell.contentView.layoutIfNeeded()

  • 就是这样,它将根据您给定的字符串调整标签的大小。 欲了解更多信息,请点击此
    这是一步一步的输入。

    我有你放在这里的所有东西。我认为问题在于我在Firebase的异步回调中设置了UI(我使用Firebase作为后端)。因此,在背景中设置实际数据之前,AutoLayout已经推导出了获取数据之前的高度。这就是为什么我调用reloadrows方法来强制单元格重新加载,以便AutoLayout根据返回的数据设置约束。你以前遇到过这样的情况吗?谢谢你的回复@carl pan,在向上滚动表视图时,您是否遇到任何问题?是的,我在滚动时确实看到奇怪的反弹。我已通过一些解决方法进行了修复,创建了一个可变字典,然后在willDisplayCell方法上设置该字典中的indexpath高度。然后实现eatimateRowHeight委托方法,从字典中搜索indexpath(如果有)并返回它,否则返回UITableViewAutomaticDimension。此解决方法修复了表视图中的反弹或故障。谢谢!我试试看。为什么要在CellForRowatineXpath中调用api??您可以在viewDidLoad()中调用api,并根据需要将结果保存在数组或字典数组中。然后您可以使用此数组更新UI元素。我认为从cellForRow调用api是完全正常的。。。因为我们不想获取用户可能永远不会显示的外部数据。