uitableviewcell中的swift uitableview,自动布局始终高度为0

Posted

技术标签:

【中文标题】uitableviewcell中的swift uitableview,自动布局始终高度为0【英文标题】:swift uitableview in uitableviewcell with auto layout always height of 0 【发布时间】:2016-06-01 15:39:39 【问题描述】:

我在情节提要中定义了一个 UITableView,其中一个 UITableViewCell 包含另一个 UITableView 作为其内容的一部分,并且在情节提要中全部定义了一个 UITableViewCell。

IB image

两个内容视图都完全由自动布局指定。然而,嵌套表的框架高度始终为零。如果我打开嵌套表的高度,您可以看到所有内容,所以我知道它在那里;但是,如果没有硬编码的高度,它始终为 0。我以前做过,但无论出于何种原因,我都遗漏了一些东西。

***表工作正常。嵌套表正确加载其单元格。我已经完成了

    removalTable.estimatedRowHeight = 127
    removalTable.rowHeight = UITableViewAutomaticDimension
    removalTable.setNeedsLayout()
    removalTable.reloadData()

我对 SO 并不是很陌生,但由于某种原因,我的 openID 无法正常工作。

【问题讨论】:

当我嵌套了表视图时,我在子表视图上调用layoutIfNeeded 而不是reloadData。这会立即布置孩子,因此在布局父母时,父母知道其孩子的高度(我很确定它是如何工作的)。因此,假设您的约束都是正确的,调用removalTable.layoutIfNeeded() 可能会有所帮助。 我试过了,但没有任何影响。最后我选择了嵌套表格视图以外的东西。 奇怪的是,它正确设置了滚动视图高度,但没有设置表格框架本身。 找到不同的解决方案可能是个好主意。很高兴你能解决一些问题。虽然嵌套的 tableviews 可以工作,但它们可能非常挑剔。过去与他们斗争过,我现在尽量远离他们。 【参考方案1】:

我已经多次看到这个错误。 这可能是因为您没有在要显示的单元格内设置良好的约束您需要检查什么?

    至少在顶部和底部都有一个锚点。 您在内容的一个视图中具有固定高度。

也许这篇文章可以帮助你:Using Auto Layout in UITableView for dynamic cell layouts & variable row heights

希望对你有帮助。

【讨论】:

可以看到图片中的约束。它们是为内容视图完全指定的。 那篇文章没有讨论问题所在的嵌套表。 是的,但问题在于包含该表格视图的单元格。您需要为该单元格内的该表格视图指定一个高度。 @BigHenry

以上是关于uitableviewcell中的swift uitableview,自动布局始终高度为0的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 中创建新闻提要 UI

Xcode (Swift) 中的 UI:我只想要 UIStackView 的折叠功能,而不是标准化间距。还值得用吗?

当 UITableViewCell 使用 Swift 展开时如何更改 UIButton Image?

FirebaseUi - Swift - 将 UITableViewCell 的值转换为自定义类

UITableViewCell中的Swift ScrollView不滚动

Swift 中 UITableViewCell 中的同步滚动 UICollectionViews