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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在没有导航栏的情况下水平切换视图?相关的知识,希望对你有一定的参考价值。

我目前正在制作一个有3个视图的简单应用。我希望能够使用滑动手势在视图之间移动。

请记住,我是使用xcode的新手,所以我目前的解决方案是:向我的第一个视图控制器添加“滑动手势”,并使用“show”作为我的segue将该手势连接到下一个视图。

然而,“show”使得过渡自下而上,而我想要向右转换。

我已经尝试将我的第一个视图嵌入到导航控制器中,这允许过渡是水平的。我使用“滑动手势”将我的第一个视图链接到我的第二个视图,然后使用水平segue进入第二个视图。但是,回到第一个视图的唯一方法是按下导航栏的“后退”按钮。

有没有办法使用您自己的手势/按钮和水平过渡在几个视图之间导航?

答案

如果不需要segues,则可以使用push和pop函数在视图之间进行转换。设置IBActions以接收滑动手势,并根据用户滑动的方式让它们执行推送或弹出。

@IBAction func leftSwipeHandler(_ gestureRecognizer : UISwipeGestureRecognizer) {
  if gestureRecognizer.state == .ended {
    let view2 = secondViewController()
    navigationController?.pushViewController(view2, animated: true)
  }
}

@IBAction func rightSwipeHandler(_ gestureRecognizer : UISwipeGestureRecognizer) {
  if gestureRecognizer.state == .ended {
    navigationController?.popViewController(animated: true)
  }
}

以上是关于如何在没有导航栏的情况下水平切换视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不丢失导航栏的情况下将子视图添加到 UINavigation 控制器?

在不影响导航栏的情况下更改 NavigationController 的内容视图宽度

底部导航栏的 Oncreate 视图问题

在 Swift 3.0 中实现滑动以在没有导航栏的情况下向后导航

隐藏导航栏会导致视图向上移动

如何在不使用导航栏的情况下从导航堆栈中弹出控制器