如何在窗口中添加视图,该视图将在每个视图控制器的滑动时显示?

Posted

技术标签:

【中文标题】如何在窗口中添加视图,该视图将在每个视图控制器的滑动时显示?【英文标题】:How to add view in window which will show on swipe of every view controller? 【发布时间】:2015-10-20 11:17:02 【问题描述】:

我有一个场景,比如我有很多带有导航控制器的视图控制器,而这个导航控制器是窗口的根视图。现在,如果我滑动屏幕上的哪个视图控制器,那么一个视图将显示一些选项。那么应该采取什么方法来开发这个呢?那么我可以将导航控制器作为窗口的根视图并在窗口中添加 1 个视图并在窗口中添加滑动手势吗?因此,当向左滑动时,将显示添加到窗口中的视图,并单击任何选项,我的新视图控制器将被推送?

【问题讨论】:

【参考方案1】:

我不确定我是否遵循您的要求,但让我们看看我能想到什么。为简单起见,您应该使用故事板。您应该将导航控制器拖出右侧视图。您应该选择这个控制器并进入属性标签,在“视图控制器”部分有一个“是初始视图控制器”复选框。选择它,ios 会自动将它作为窗口的根视图控制器。从这里你应该为导航控制器创建一个子类。将其称为“应用程序导航控制器”或“主导航控制器”并覆盖“viewdidload”。由于这是根视图控制器,并且您从不打算更改根,因此应该只调用一次“viewdidload”。从该函数中,您应该分配 2 个滑动手势。一个用于右侧,另一个用于左侧。

这应该注意将导航控制器设置为您的根并设置左右滑动。现在,如果您想在导航控制器中使用视图,则必须进入情节提要并将视图控制器对象添加到屏幕。完成后,右键单击导航控制器并将其拖到新添加的 viewController 上。释放鼠标按钮应该会弹出一个窗口,您可以在其中选择“根视图控制器”,即导航控制器的根。在此处添加您的视图,根据您的解释,这听起来像是您想要一个表格视图。

从你的问题很难确定你到底想要什么。似乎您想要一个由导航控制器控制的标准视图控制器堆栈。带有侧面菜单。如果是这种情况,那么您将不得不使用 3rd 方库,因为苹果不提供侧面菜单小部件。然后事情变得更加复杂,您的应用程序的根应该只有一个具有 2 个容器视图的视图控制器,然后将视图控制器添加到这些容器中。主容器将包含上面解释的导航控制器。另一个容器,也就是侧边菜单,将保存带有 tableview 的视图控制器。在情节提要中,您只需正确的容器视图并在所需的视图控制器上拖动/释放,然后选择“视图控制器”选项。您必须设置自动布局并在滑动时为约束设置动画。

我可以继续说一会儿,但也许你可以利用其中的一些知识来完成你想要的。

【讨论】:

【参考方案2】:

在滑动动作函数调用 presentViewController 中,为每个希望出现 swipeVC 的 VC 添加滑动手势,该函数将在导航堆栈之外显示视图控制器。

当你完成这个 VC 后,调用 presentingViewController.dismissViewController 并准备 segue 回到正在呈现的 vc,获取导航控制器并要求它呈现堆栈中的下一个 vc。

【讨论】:

以上是关于如何在窗口中添加视图,该视图将在每个视图控制器的滑动时显示?的主要内容,如果未能解决你的问题,请参考以下文章

弹出窗口中的按钮将在主视图控制器中显示文本

如何在所有视图控制器中将自定义 uibarbuttonItem 添加到我的导航项?

如何将视图添加为某些控制器的子视图

如何以编程方式设置控制图像视图宽度的滑块

使用 UIAppearance 渲染图像

将视图添加到窗口层次结构