如何阻止 UIView 使用 tableview 滚动?
Posted
技术标签:
【中文标题】如何阻止 UIView 使用 tableview 滚动?【英文标题】:How to stop a UIView from scrolling with tableview? 【发布时间】:2015-11-25 03:57:33 【问题描述】:我有一个 UITableViewController,我在导航项的正下方和实际表格的上方放置了一个 UIView。我遇到的问题是视图随表格视图滚动。
如何让它表现得与导航栏完全一样,并让 tableview 中的项目在它后面滚动。
而不是让视图滚动,它应该保持在它的位置并且让所有东西都在它后面。很抱歉再次重申,但我发现有时这是必要的。
【问题讨论】:
你不想要一个表格视图控制器。只需在视图控制器中放置一个 tableview 并将视图放在 tableview 前面。 @madmik3 这会毁掉我目前所做的一切吗?没有别的办法吗? 正确,这是必要的改变。UITableViewController
除了表格视图之外不能有其他任何东西。您可能能够将一些单元格子视图复制并粘贴到新视图控制器中,但约束可能不会复制。如果您不喜欢事情的运作方式,请向苹果提交雷达。
或者只是覆盖viewDidLayoutSubviews
以保持视图在您想要的位置,并跳过雷达。
【参考方案1】:
您放置在情节提要中单元格上方的视图将成为表格视图的tableHeaderView
。
您可以通过在每次表格视图布置其子视图时将其frame.origin
重置为表格视图的bounds.origin
来使标题视图看起来固定:
- (void)viewDidLayoutSubviews
[super viewDidLayoutSubviews];
UIView *header = self.tableView.tableHeaderView;
CGRect frame = header.frame;
frame.origin = self.tableView.bounds.origin;
header.frame = frame;
结果:
【讨论】:
这无疑是我见过的最好、最简洁的答案。我有一种感觉,我不需要实施大规模的改变。非常感谢。【参考方案2】:假设您不希望地图视图移动,那么您可以将其用户交互设置为 false。
或者,您可以将 tableView 的标题(如果您只有一个部分)设置为地图视图。
【讨论】:
以上是关于如何阻止 UIView 使用 tableview 滚动?的主要内容,如果未能解决你的问题,请参考以下文章
如何阻止我的 tableView 单元格重复使用其中的按钮?