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

Joa*_*urz 6 objective-c uitableview ios uistoryboard autolayout

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

storbyboard显示父视图控制器和嵌入视图控制器

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

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

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

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

应用程序截图显示表视图确实填充了整个容器视图,但节标题位置太低

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

在表格视图中滚动后的应用程序截图

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

任何想法为什么以及如何解决它?

rde*_*mar 22

这可以通过取消选中IB中的"Under Top Bars"框来修复其中包含容器视图的控制器,而不是表视图控制器.你应该这样做似乎是不对的,因为你会认为让主视图(在容器控制器中)扩展到导航栏下不会使嵌入式表视图的行为方式如此.