desea navegar entre barras de tabs mediante el uso de gestores de deslizamiento en swift

Quiero usar un gesto de deslizar para navegar entre los controlleres de barra de tabs mientras mantengo las barras de tabs pnetworkingeterminadas. Utilicé este código pero muestra un error.

import UIKit class FirstViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() var leftSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:")) leftSwipe.direction = .Left view.addGestureRecognizer(leftSwipe) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. func handleSwipes(sender:UISwipeGestureRecognizer) { if (sender.direction == .Left) { let storyboard = UIStoryboard(name: "Main", bundle: nil) let vc = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! UIViewController self.presentViewController(vc, animated: false, completion: nil) } if (sender.direction == .Right) { } } } } 

Su function handleSwipes debe ser una function de nivel de class, no una function interna de otra function:

 override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. // remove the func from here } func handleSwipes(sender:UISwipeGestureRecognizer) { if (sender.direction == .Left) { let storyboard = UIStoryboard(name: "Main", bundle: nil) let vc = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! UIViewController self.presentViewController(vc, animated: false, completion: nil) } if (sender.direction == .Right) { } } 

Ese es el error obvio que puedo ver. Siempre debe publicar su post de error con sus preguntas para mejorar la calidad de las respuestas.

Podría hacer que su código funcione al agregar la ID a la class SecondViewController como se muestra en la image a continuación:

introduzca la descripción de la imagen aquí

El único problema es que, una vez que esto funcione, no podrá ver el controller de la barra de tabs, ya que ha abierto el SecondViewController que no tiene el controller de la barra de tabs de la interfaz de usuario.

Por favor, hágamelo saber si mi solución funciona y encontró otra forma de pasar a la segunda vista y también tener la barra de tabs de la interfaz de usuario en su lugar.

[EDIT] En realidad, desenterré un poco más y descubrí que era más fácil de lo que esperaba. La solución a nuestro problema del controller tabBar que no aparece es la siguiente:

  func handleSwipes(sender:UISwipeGestureRecognizer) { let selectedIndex: Int = self.tabBarController!.selectedIndex self.tabBarController!.selectedIndex = selectedIndex + 1 } 

La mejor manera para UITabBarViewController (Swift 3.0) será la siguiente:

func handleSwipes (emisor: UISwipeGestureRecognizer) {

  if sender.direction == UISwipeGestureRecognizerDirection.left { self.selectedIndex += 1 } else if sender.direction == UISwipeGestureRecognizerDirection.right { self.selectedIndex -= 1 } } 

Probablemente debería utilizar los methods UITabBarControllerDelegate para lograr esto. Hay nuevos methods de delegado en UITabBarControllerDelegate que le permiten devolver UIViewControllerAnimatedTransitioning y UIViewControllerInteractiveTransitioning .

Estos son los methods delegates que usaría,

 - (id <UIViewControllerInteractiveTransitioning>)tabBarController:(UITabBarController *)tabBarController interactionControllerForAnimationController: (id <UIViewControllerAnimatedTransitioning>)animationController; - (id <UIViewControllerAnimatedTransitioning>)tabBarController:(UITabBarController *)tabBarController animationControllerForTransitionFromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC; 

El código Swift para los methods delegates se ve así,

 func tabBarController(tabBarController: UITabBarController, interactionControllerForAnimationController animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? func tabBarController(tabBarController: UITabBarController, animationControllerForTransitionFromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?