如何在导航视图控制器上滑动时进行即时转换

Posted

技术标签:

【中文标题】如何在导航视图控制器上滑动时进行即时转换【英文标题】:How to Make an Instant Transition When Swiping on a Navigation View Controller 【发布时间】:2018-04-06 23:37:34 【问题描述】:

我设置了一个导航视图控制器,带有一个后退按钮,用于在 2 个控制器之间切换。用户可以单击后退按钮或只是在屏幕上滑动以获得相同的行为。我想要做的是避免用户开始向左滑动,然后取消转换,保持在同一个控制器上而不是回到第一个。

我知道有一种方法可以block this transition,但不建议这样做。我想要做的是立即执行过渡。我在一些应用程序中看到用户开始向左滑动,滑动会立即执行,并且不会让他们选择中途取消转换。如何执行这种强制即时转换?

我假设它与调用 interactivePopGestureRecognizer 有关,但不知道如何处理它。

谢谢!

【问题讨论】:

【参考方案1】:

我想出了一个办法。在 viewDidDisappear 中,我添加了以下内容:

navigationController?.popViewController(animated: true)

如果有人从左侧开始滑动,viewDidDisappear 会被调用。即使他取消了转换,控制器仍然会被弹出,强制返回根控制器。

【讨论】:

以上是关于如何在导航视图控制器上滑动时进行即时转换的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有导航栏的情况下水平切换视图?

隐藏导航栏时如何启用滑动手势?

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

如何增加导航控制器向后滑动手势响应区域?

滑动单元格时,有没有办法从 tableViewCell 导航到另一个视图控制器?

在不使用导航控制器的情况下转到第二个视图时如何显示动画?