Ios UITableViewCell内的UICollectionView:每个单元的“重新加载数据”顺序?

Ios UITableViewCell内的UICollectionView:每个单元的“重新加载数据”顺序?,ios,objective-c,uitableview,uicollectionview,nslayoutconstraint,Ios,Objective C,Uitableview,Uicollectionview,Nslayoutconstraint,我在UITableViewCell中有一个UICollectionView,约束条件是集合视图适合单元格的边界 根据一些外部数据(定期刷新),我创建了不同的集合视图单元(大小),它们具有不同的高度 当我获得外部数据时,我会按顺序重新加载集合视图和表视图: 为外部数据的新单元格重新加载集合视图 为该特定行的新高度重新加载表格视图 问题是,如果说,我得到了一些需要小的集合视图单元格的数据,那么表格视图单元格的高度将是小的,然后如果新数据进来,需要大的集合视图单元格,在步骤1,集合视图仍然是小的大小,

我在
UITableViewCell
中有一个
UICollectionView
,约束条件是集合视图适合单元格的边界

根据一些外部数据(定期刷新),我创建了不同的集合视图单元(大小),它们具有不同的高度

当我获得外部数据时,我会按顺序重新加载集合视图和表视图:

  • 为外部数据的新单元格重新加载集合视图
  • 为该特定行的新高度重新加载表格视图
  • 问题是,如果说,我得到了一些需要小的集合视图单元格的数据,那么表格视图单元格的高度将是小的,然后如果新数据进来,需要大的集合视图单元格,在步骤1,集合视图仍然是小的大小,但其中的单元格将是大的,然后我收到以下警告:

    项目高度必须小于UICollectionView的高度减去部分插入的顶部和底部值,再减去内容插入的顶部和底部值

    如果我得到了大单元格的数据,然后是小单元格的新数据,它就可以正常工作

    那么,正确的做法应该是什么呢


    谢谢

    您是否已将其设置为viewDidLoad

    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = CGFloat(60.0) //your best height estimate
    

    你把它设置成viewDidLoad了吗

    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = CGFloat(60.0) //your best height estimate
    

    @iPhone OP在UITableViewCell中有一个UICollectionView,而不是相反。当需要重新加载具有不同单元格大小的集合视图时,更新UI的顺序应为1。没有自动布局-表视图“重新加载行”,行索引具有要更新的集合视图,并返回相应的行高度-重新加载集合视图。2.使用自动布局:-更新集合视图高度约束-重新加载集合view@iphonicOP在UITableViewCell中有UICollectionView,而不是相反。当需要重新加载具有不同单元格大小的集合视图时,更新UI的顺序应为1。没有自动布局-表视图“重新加载行”,行索引具有要更新的集合视图,并返回相应的行高度-重新加载集合视图。2.使用自动布局:-更新集合视图高度约束-重新加载集合视图实际上我考虑过这一点,但自动大小要求表格单元格的内容(即在我的情况下为集合视图)具有固有的内容大小,但集合视图(即滚动视图)在固有内容大小方面有奇怪的行为。否则,您可以将高度存储在属性上并调用:
    tableView.beginUpdates()
    tableView.endUpdates()
    。这将在不重新加载数据的情况下触发高度更改。感谢@pesch让我尝试一下,但自动大小要求表格单元格的内容(即我的示例中的集合视图)具有内在的内容大小,但集合视图(即滚动视图)不具有内在的内容大小在固有内容大小方面有奇怪的行为。否则,您可以将高度存储在属性上并调用:
    tableView.beginUpdates()
    tableView.endUpdates()
    。这将在不重新加载数据的情况下触发高度变化。谢谢@pesch让我试试