UITableViewCell 高度内的 UITableView 未按预期工作

Posted

技术标签:

【中文标题】UITableViewCell 高度内的 UITableView 未按预期工作【英文标题】:UITableView inside UITableViewCell height not working as expected 【发布时间】:2017-09-11 09:43:25 【问题描述】:

我有一个 UITableView,其中有一些始终存在的单元格,一个带有 UICollectionView 的单元格,其作用类似于选项卡,最后一个单元格带有里面有一个UITableView,它的数据会发生变化。

然后当用户选择其中一个“选项卡”时,我想重新加载嵌套表以显示正确的数据行(此行的高度将是动态的)。

我已经实现了嵌套表在集合项选择上的变化,但我面临的问题是单元格内的 UITableView 大小不正确。

我构建了一个示例应用程序只是为了简化视图。正如您在屏幕截图中看到的那样,包含表格的单元格没有填满屏幕的其余部分,因此除非您滚动此表格,否则这 10 行是不可见的。

我想要的是这张表格填充屏幕的其余部分。用户必须能够滚动主 tableview,而不是嵌套的,并且仍然可以看到所有嵌套的 table 单元格。

我不能对多个部分执行此操作,因为我将有一个始终固定在顶部的标题部分,如果我有另一个部分,它的标题将替换滚动上的粘性部分。

我已将主 UITableView 的 rowHeight 设置为 UITableViewAutomaticDimensionestimatedRowHeight。我已将其固定在单元格 ContentView 的顶部、左侧、右侧和底部。

你能帮我解决这个问题吗?如果有帮助,我可以上传示例项目并在此处链接。

非常感谢!

【问题讨论】:

嘿,你有什么解决办法吗? 【参考方案1】:

如果你使用的是自动布局,那么

为嵌套表格视图提供高度常数,为该高度约束创建出口。

当您重新加载该嵌套表时,您将获得该表的内容大小。

从该内容大小中获取高度并修改高度限制。

【讨论】:

我已经尝试过你的解决方案,当我给嵌套表一个高度约束时,它会将大小更改为这个任意值,但是当我重新加载表时,它不会改变任何东西。要设置高度约束的值,我这样做:self.tableHeightConstraint.constant = self.tableView.contentSize.height 你需要在父tableview的cellForRow中添加这个,所以当你重新加载它会重新计算并设置为嵌套表。重新加载嵌套表后,您的上述行也会出现。 好的,现在嵌套表填满了剩余的可用空间,但除非滚动嵌套表视图,否则我看不到所有行。我希望嵌套表视图溢出主表(我不确定我是否正确解释了这一点)。我不希望用户看到有 2 个表视图,我不希望嵌套表可以滚动,我希望它的行为就像它是一个表视图一样。 嵌套表格中所有单元格的高度是可变的还是相同的?如果相同,那么您可以手动计算总高度并可以分配给高度约束,然后可以调用嵌套表上的重新加载数据以显示所有记录。 高度可变

以上是关于UITableViewCell 高度内的 UITableView 未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

更改 UITableViewCell 内的 UIView 高度

如何增加 UItableviewcell 内的 UItableview 高度?

具有动态高度的 UITableViewCell 内的 UITableView

动态 UITableViewCell 高度内的动态 UITextView?

UITableViewCell 高度内的 UITableView 未按预期工作

UITableViewCell内的UICollectionView如何根据屏幕大小调整tableview单元格高度