代码之家  ›  专栏  ›  技术社区  ›  problème0123

另一类中的滑动手势识别器

  •  1
  • problème0123  · 技术社区  · 6 年前

    我有一个ViewController,它连接到第二个view SecondViewController,我想用一个UI手势从一个切换到另一个

    class ViewController: UIViewController{
    
            override func viewDidLoad() {
            super.viewDidLoad()
    
            let svc = SecondViewController()
            let leftSwipe = UISwipeGestureRecognizer(target: svc, action: #selector(svc.swipeAction(swipe:)))
            leftSwipe.direction = UISwipeGestureRecognizerDirection.left
            self.view.addGestureRecognizer(leftSwipe)
        }
    }
    
    
    class SecondViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(swipeAction(swipe:)))
            rightSwipe.direction = UISwipeGestureRecognizerDirection.right
            self.view.addGestureRecognizer(rightSwipe)
    
    
    
            // Do any additional setup after loading the view.
        }
    
        @objc func swipeAction(swipe: UISwipeGestureRecognizer)
        {
            print(swipe.direction.rawValue)
            switch swipe.direction.rawValue {
    
            case 1:
                performSegue(withIdentifier: "toTheLeft", sender: self)
            case 2:
                performSegue(withIdentifier: "toTheRight", sender: self)
            default:
                break
            }
        }
    
    }
    

    代码不工作,什么都没有发生,我没有错误消息。

    2 回复  |  直到 6 年前
        1
  •  1
  •   rmaddy    6 年前

    问题是 svc 结束时超出范围 viewDidLoad 你的例子 SecondViewController 取消分配。

    财产 ViewController . 如果要显示第二个视图控制器,请显示存储在 财产。

    请记住,将另一个视图控制器设置为第一个视图控制器中手势的处理程序是没有意义的。

        2
  •  0
  •   Ricky Mo    6 年前

    目标 UISwipeGestureRecognizer 应该是 self 在视图和控制器中 swipeAction