如何阻止 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上面加个UIView的问题

如何在tableview标题中更改uiview的高度

如何阻止我的 tableView 单元格重复使用其中的按钮?

隐藏 UIView 后如何重置 tableview 内容高度

如何在 TableView 中居中自定义 UIView?

将图像从 TableView 传递到 UIView