在动态 UITableViewController 的标头中嵌入静态 UITableViewController

Posted

技术标签:

【中文标题】在动态 UITableViewController 的标头中嵌入静态 UITableViewController【英文标题】:Embedding a static UITableViewController in the header of a dynamic UITableViewController 【发布时间】:2016-01-03 08:34:09 【问题描述】:

我想显示一个tableview,其下方是一个静态部分,后跟一个动态部分。按照 SO 的建议,我做了以下事情:

创建动态UITableViewController A 作为第一个UITableViewController的标题视图,使用嵌入静态UITableViewController B的容器视图

它可以工作,但是嵌入B 的标题视图拼命保持其默认高度 44 点,这显然不是我想要的。

AprepareForSegue 中:我正确地将我的UITableViewController 作为目标vc,但它的preferredcontentsize 是(0,0)。容器视图没有任何限制,我似乎无法在Storyboard 中添加任何内容。如果我检查目标 vc 的 tableView,我看到它的大小是 (600,73),可能意味着它还没有布局。

如何为我的嵌入视图设置正确的高度?

【问题讨论】:

感谢 Honk、Rohit、jtbandes 的编辑,以及 Wain 的回答。 【参考方案1】:

表格视图(控制器)不使用自动布局来调整标题的大小。设置标题视图时,它具有特定的大小,并且将保持该大小。目前您的标题视图是从情节提要中添加的,因此它永远不会改变大小。

你需要布局你的静态表格视图内容,或者计算它需要的大小,然后添加一个合适大小的容器视图作为标题。任何时候需要更改大小时,您都需要删除旧标题,调整大小,然后添加新标题。

【讨论】:

以上是关于在动态 UITableViewController 的标头中嵌入静态 UITableViewController的主要内容,如果未能解决你的问题,请参考以下文章

具有混合静态/动态内容的 UITableViewController 中的 NSRangeException

UITableViewController 的基本(静态)单元格标签中的动态类型 - 可能吗?

在Uitableviewcontroller内创建水平可滚动区域

如何缩小 UITableViewController 中的静态单元格宽度

Swift 动态变量不能是 Printable 类型

嵌入在 UITableViewCell 中的动态、自定义布局 UICollectionView