当在两个UIViewControllers之间调用segue时,屏幕需要从右向左滑动

时间:2017-03-07 04:18:57

标签: ios swift swift3 segue uistoryboardsegue

我正在处理一个在swift 3中完成的项目,我使用方法performSegueWithIdentifier在两个视图控制器之间调用segue。虽然它指向所需的UIViewController,但屏幕仅从下到上滑动(默认情况下)。我的要求是确保在调用segue后屏幕从右向左滑动。代码如下:

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

3 个答案:

答案 0 :(得分:1)

  1. 确保您的ViewController嵌入在NavigationController中。
  2. 确保为故事板中的segue选择了Show而不是Present。

答案 1 :(得分:1)

而不是使用performSeguewithIdentifier将viewController与这样的动画一起使用。

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)
}
}

在secViewController.swift中,您应该有一个要传递值的变量

class secViewController: UIViewController {
    var category:Bool?
}

答案 2 :(得分:1)

你也可以使用Custom Transitions来实现这样的目标。

请参阅:https://github.com/pgpt10/Custom-Animator了解如何在视图控制器中实现自定义转换。