【问题标题】:Implement swipe to navigate back with no navigation bar in Swift 3.0在 Swift 3.0 中实现滑动以在没有导航栏的情况下向后导航
【发布时间】:2017-10-25 22:53:29
【问题描述】:

这是我的视图控制器:

我没有导航栏,但有一个后退按钮,可将用户带回上一个视图控制器。我想要实现的是滑动导航回来。我进行了很多搜索,但没有找到任何有关正确描述的帮助。请帮我实现这个。

【问题讨论】:

  • 您是否尝试过在手势识别器上添加(退出)展开转场?
  • @pesch,如何实现?

标签: ios swift3 navigation swipe viewcontroller


【解决方案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 中试试
  • UISwipeGestureRecognizerUIKit 的一部分,您正在以编程方式将其添加到这一行的视图中:self.view!.addGestureRecognizer(swipeLeft)
  • 非常感谢@pesch。有效。你能给我一些提示,让导航到以前的视图控制器动画吗?
  • 最简单的方法是选择展开转场并在属性检查器中检查动画。但是,如果你想要更复杂的东西,你需要使用UIViewControllerAnimatedTransitioning
【解决方案2】:

尝试使用触摸移动、开始和结束委托方法来查找您的触摸移动。然后根据 x 或 y 位置的偏差,您可以导航用户。

【讨论】:

【解决方案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)

这将是您自定义的简单方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多