我有一个在导航控制器下显示的视图。视图顶部包含一个子视图,底部包含表视图。该表可能具有基于数据延伸超出可见高度的行。如果我的行位于最后一个可见行的下方,如果我向上滚动视图,它会反弹,它不会停留在那里。有没有办法让它留下来? 我尝试使父视图成为滚动视图,但没有帮助。我的观点来自XIB。
答案 0 :(得分:26)
听起来UITableView的大小略大于iPhone屏幕上的可用区域。这可能是因为视图没有考虑到导航栏的大小。作为测试,进入Interface Builder并使UITableView更小,比如说大小的一半,这样你就可以清楚地看到顶部和底部。看看你是否仍然有相同的弹跳。
如果大小正确,UITableView不需要UIScrollView按预期运行。事实上,我现在可以想到的几个原因(除了水平滚动之外),你需要在UIScrollView中使用UITableView。
答案 1 :(得分:0)
在顶级视图控制器中,在"模拟指标" - 设置中,将顶栏和/或底栏(取决于View Controller中显示的内容)设置为&#34 ;不透明&#34 ;.然后调整表视图的大小以适应导航栏和工具栏/标签栏之间的距离。 最后,添加两个约束:
无论方向如何,我的工作都很顺利。
答案 2 :(得分:0)
如果您没有使用Storyboard,可以尝试以下(快速)代码:
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)
请注意,这是一个简单且“粗略”的代码。如果需要,你可以让它变得更漂亮:)