按下后,表格视图顶部空间到导航栏增加

时间:2015-09-21 13:15:05

标签: ios xcode swift

当我单击表格视图中的一个单元格时,它会打开一个包含以下代码的新视图:

   let fullResView : FullResponseViewController = self.storyboard?.instantiateViewControllerWithIdentifier("FullResponseView") as! FullResponseViewController
   fullResView.receivedPost = post
   self.navigationController?.pushViewController(fullResView, animated: false)

当我按下时,它会增加表格视图和顶部布局指南之间的距离。表示:

table view navigation controller error.

层次:

  • 我有一个标签栏控制器,它嵌入在导航控制器中。
  • 表格视图是拖放&创建普通视图后删除。因此表视图位于视图内。
  • 表视图包含标题视图。为此设置背景颜色时,它会与它一起移动,因此它不应该是具有这些约束的任何颜色。

表格视图的约束是:

  • 与superview相同
  • 将中心X与超级视图对齐
  • 顶部空间到顶部布局指南
  • 底部空间到底部布局指南

我尝试过以下方法:

在viewWillAppear中设置:

self.responsesTableView.contentOffset =  CGPointMake(0, 0)
self.automaticallyAdjustsScrollViewInsets = false

当我按下,然后切换到标签栏中的另一个视图,然后再次切换回来时,这确实有效。没有contentOffset它将永远保持这样。

2 个答案:

答案 0 :(得分:12)

正如我所看到的OP图像看起来像导航半透明属性问题。因为推动一个viewcontroller后有相同的44px空白区域。所以这意味着如果您的导航半透明属性为真,那么您的UITableview从第0个Y位置开始。如果您的导航半透明属性为false,则UITableview从44px Y位置开始。

所以我猜想在UINavigation的半透明变成真假的情况下推送和返回。在DidFinish方法的appdelegate类中添加一行:

UINavigationBar.appearance().translucent = false

这是appearance的{​​{1}},用于在您的项目中使这个虚假的全球化。希望能解决你的问题。

答案 1 :(得分:0)

我不确定这是否与您的特定问题有关,但值得检查您的UITableView是否是您屏幕上的第一个控件:

Why is there extra padding at the top of my UITableView

即使在最新版本的Xcode中,这也是一个错误。但如果你知道如何绕过它,它很容易修复。

enter image description here