2017-03-07 2 views
0

Im travaillant sur un projet qui est fait dans swift 3 et I appelle une coupure entre deux contrôleurs de vue en utilisant la méthode performSegueWithIdentifier. Bien qu'il dirige vers le UIViewController désiré, l'écran glisse de bas en haut seulement (par défaut). Mon exigence est de faire en sorte que l'écran glisse de droite à gauche une fois que cette section est appelée. Le code est ci-dessous:Quand un appel est appelé entre deux écrans UIViewControllers doit glisser de droite à gauche

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if tableView == self.categoryTableView { 
     performSegue(withIdentifier: "showBrowsVC", sender: nil) 
    } 
} 
+0

Vous pouvez créer une présentation personnalisée. [Guide Apple] [1] [1]: https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/DefiningCustomPresentations.html#//apple_ref/doc/uid/TP40007457-CH25- SW1 –

Répondre

1

Au lieu d'utiliser performSeguewithIdentifier présente viewController avec animation comme ceci.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
if tableView == self.categoryTableView { 
let transition = CATransition() 
transition.duration = 0.5 
transition.type = kCATransitionPush 
transition.subtype = kCATransitionFromRight 
view.window!.layer.add(transition, forKey: kCATransition) 
let secVC = self.storyboard?.instantiateViewController(withIdentifier: "secViewController") as! secViewController 
secVC.category = home 
present(secVC!, animated: false, completion: nil) 
} 
} 

En secViewController.swift, vous devriez avoir une variable que vous voulez transmettre des valeurs

class secViewController: UIViewController { 
    var category:Bool? 
} 
+0

Désolé Im nouveau à rapide, je suis donc supposé donner un ID storyboard à mon second viewcontroller comme "secViewController". Est-ce que c'est ce que vous suggérez? – danutha

+1

Oui. Vous devez donner un identifiant de storyboard à votre second contrôleur View et utiliser ce storyboardID. –

+0

très petite question monsieur. comment puis-je appeler cette identification dans ma méthode de préparation à la segue? – danutha

0
  1. Assurez-vous que ViewController est intégré dans un NavigationController.
  2. Assurez-vous d'avoir sélectionné Afficher au lieu de Présent pour le segue dans le storyboard.
+0

Comme je l'ai mentionné, les segments se trouvent entre deux ViewContollers, mais ils ne sont pas intégrés dans un NavigationController. Ainsi, une fois qu'une rangée est sélectionnée à partir du premier viewcontroller, elle navigue vers la seconde. – danutha

+0

Vous devez intégrer le premier ViewController dans un NavigationController. – chengsam

+0

Existe-t-il un autre moyen d'atteindre cet objectif? – danutha

1

Vous pouvez également utiliser Custom Transitions pour réaliser quelque chose comme ça. Reportez-vous à: https://github.com/pgpt10/Custom-Animator pour savoir comment implémenter la transition personnalisée dans un contrôleur de vue.