嵌入在其他视图中的UITableView具有错误的节标题位置

时间:2014-05-02 14:15:55

标签: ios objective-c uitableview autolayout uistoryboard

我在另一个视图中嵌入了一个UITableView,如下所示:

storbyboard showing both parent and embedded view controller

导航控制器以模态方式显示,因此其布局应全屏,不依赖于故事板的任何其他部分。 如果已使用固定的自动布局约束设置了配置文件视图的上半部分,如下所示:

  • 图片视图的顶部布局指南(灰色的):20pt
  • 图片查看到“交易”标签:20pt
  • “交易”标签到容器视图:20pt
  • 容器视图到底部布局指南的距离,前导和尾随空格:全部为0pt。

所以基本上,当屏幕较大时,容器视图应该填充剩余的空间。

在容器视图中,我嵌入了一个Table View(包括相应的控制器)。为了使问题更加明显,我给容器视图一个绿色背景,表格视图为蓝色(这就是为什么节标题略微偏蓝)。当然,我希望表视图填充整个容器视图。但这只是部分发生的:

app screenshot showing that table view does fill the complete container view, but section header is positioned too low

因此表视图确实填充了整个容器视图(表视图的背景颜色为蓝色),但节标题位于低位。如果我向下滚动,则节标题保持在同一位置,但单元格向上移动并显示在其上方:

app screenshot after scrolling in table view

我已经尝试检查并取消选中表视图控制器的“扩展边缘”复选框,控制它是否扩展“在顶部条形图下”,“在底部条形图下”和“在不透明条形图下”,但这没有帮助。看起来表格视图为导航栏和状态栏留下了空间,但它不应该,我不明白如何使它能够正确地布置节标题和单元格。

为什么会这样,以及如何解决它?

2 个答案:

答案 0 :(得分:22)

这可以通过取消选中" Under Top Bars"来解决。 IB中的框用于其中包含容器视图的控制器,而不是表视图控制器。你不得不这样做似乎是正确的,因为你会认为主视图(在容器控制器中)扩展到导航栏下并不会使嵌入式表格视图的行为方式它确实。

答案 1 :(得分:3)

禁用"调整滚动视图插图"包含视图的内容在这里也有帮助。