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

When a segue is called between two UIViewControllers screen needs to slide from right to left

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

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if tableView == self.categoryTableView {
        performSegue(withIdentifier: "showBrowsVC", sender: nil)
    }
}
  1. 确保您的 ViewController 已嵌入 NavigationController。
  2. 确保您为故事板中的 segue 选择了 Show 而不是 Present。

而不是使用 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?
}

您也可以使用 Custom Transitions 来实现类似的目的。

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