在 Swift 3.0 中实现滑动以在没有导航栏的情况下向后导航
Posted
技术标签:
【中文标题】在 Swift 3.0 中实现滑动以在没有导航栏的情况下向后导航【英文标题】:Implement swipe to navigate back with no navigation bar in Swift 3.0 【发布时间】:2017-10-25 22:53:29 【问题描述】:这是我的视图控制器:
我没有导航栏,但有一个后退按钮,可将用户带回上一个视图控制器。我想要实现的是滑动导航回来。我进行了很多搜索,但没有找到任何有关正确描述的帮助。请帮我实现这个。
【问题讨论】:
您是否尝试过在手势识别器上添加(退出)展开转场? @pesch,如何实现? 【参考方案1】:你可以试试这个:
添加手势识别器:
let swipeLeft = UISwipeGestureRecognizer()
swipeLeft.addTarget(self, action: #selector(backSegue) )
swipeLeft.direction = .left
self.view!.addGestureRecognizer(swipeLeft)
@IBAction func backSegue()
performSegue(withIdentifier: "backSegue", sender: self)
在你想返回的 ViewController 中添加:
@IBAction func unwindBack(segue:UIStoryboardSegue)
print("Welcome back!!!")
在 ViewController 上,如果您要添加滑动识别器,请手动从 backSegue()
IBAction 转到顶部的退出图标。选择 ùnwindBack() 出口并将 segue 命名为“backSegue”。如果您需要更多详细信息,请参阅this tutorial。
【讨论】:
我没能测试它,如果你遇到麻烦告诉我,我会在 Xcode 中试试UISwipeGestureRecognizer
是UIKit
的一部分,您正在以编程方式将其添加到这一行的视图中:self.view!.addGestureRecognizer(swipeLeft)
非常感谢@pesch。有效。你能给我一些提示,让导航到以前的视图控制器动画吗?
最简单的方法是选择展开转场并在属性检查器中检查动画。但是,如果你想要更复杂的东西,你需要使用UIViewControllerAnimatedTransitioning
【参考方案2】:
尝试使用触摸移动、开始和结束委托方法来查找您的触摸移动。然后根据 x 或 y 位置的偏差,您可以导航用户。
【讨论】:
谢谢Jegadeesh,您能详细说明一下吗? 参考此链接***.com/questions/855095/… 当我在 Swift 3.0 上工作时,我试图理解这个客观的 C 东西 objectivec2swift.com 如果您不了解 objc,请使用此链接将 objc 代码转换为 swift。【参考方案3】:你可以做一件事。
1.使用将您的第一个视图控制器保留为根视图控制器的导航控制器。
2.点击或您的任何操作用户将导航到第二个视图控制器,该控制器将具有导航栏。
3.在你的 viewDidAppear() 类中让导航栏隐藏起来
self.navigationController!.isNavigationBarHidden=false
4.添加自定义返回按钮。
5.此过程将使您在滑动时导航回来,并且导航栏也将不存在。
6.Also on click your custom back button add code for
_ = self.navigationController?.popViewController(animated: true)
这将是您自定义的简单方法。
【讨论】:
以上是关于在 Swift 3.0 中实现滑动以在没有导航栏的情况下向后导航的主要内容,如果未能解决你的问题,请参考以下文章