2009-10-02 23 views
7

我有一个导航控制器下示出的图。该视图在顶部包含一个子视图,在底部包含一个表视图。根据数据,表格可能具有超出可见高度的行。当我有最后一个可见行下的行时,如果我向上滚动视图,它会反弹回来,它不会停留在那里。有没有办法让它留下来? 我试图让父视图滚动视图,并没有帮助。我的观点来自XIB。泰伯维滚动弹回并隐藏底细胞

回答

26

听起来像是你的UITableView的大小比面积稍大可用在iPhone屏幕上。这可能是因为该视图没有考虑到hte导航栏的大小。作为一个测试,进入Interface Builder并使UITableView小得多,比如说尺寸的一半,这样你就可以清楚地看到顶部和底部。看看你是否仍然有同样的弹跳。

如果尺寸是正确的,UITableView中并不需要一个UIScrollView进行正常操作。事实上,将有几个原因,我能想到的,现在(比水平滚动的人除外),你会想要一个UIScrollView内的UITableView。

+0

感谢您的观察,认为解决了这个问题,你可以让它更漂亮。 – Umark 2009-10-03 15:52:18

+11

太好了。我从你的历史中发现,你并没有选择任何接受的答案,因为官方的答案是你的问题。也许你不知道这一点,但在答案的左边你会看到一个复选标记。如果你点击你,然后选择解决问题的答案。这给了我一些声誉,加上有同样问题的人,他们看到了哪个答案帮助了你。当你有机会时,请点击复选标记。谢谢。 – mahboudz 2009-10-05 04:22:25

+0

太棒了,在解决我的问题之前尝试了一大堆东西。 – 2014-06-15 18:45:58

0

在您的顶级视图控制器,在“模拟度量” -settings,机顶盒酒吧和/或底部的条形码(取决于什么显示在您的视图控制器)设置为“不透明”。然后调整表格视图以适应导航栏和工具栏/选项卡栏。 最后,添加两个约束:

  1. 顶层空间顶部布局指南
  2. 底部空间来工作非常出色,我底布局指南

,无论方向。

0

如果你不使用故事板,你可以尝试以下(SWIFT)代码:

tableView.contentInset = UIEdgeInsetsMake((self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0) 

self.view.addSubview(tableView) 

如果你有一个工具栏或者(如果您使用的是TabBarController),你需要调整底部太:

tableView.contentInset = UIEdgeInsetsMake((self.navigationController!.navigationBar.frame.origin.y + self.navigationController!.navigationBar.frame.size.height), 0, 0, 0) 

self.view.addSubview(tableView) 

请注意,这是一个简单和'粗糙'的代码。如果需要的话:)