Ios 如何在不使用导航控制器的情况下推送UIViewController?

Ios 如何在不使用导航控制器的情况下推送UIViewController?,ios,swift,xcode,uiviewcontroller,uinavigationcontroller,Ios,Swift,Xcode,Uiviewcontroller,Uinavigationcontroller,我试图模仿可以通过SFSafariViewController观察到的行为。显示时,推送过渡动画的使用与根UINavigationalController一样。在执行“边缘平移”向右滑动时,会出现弹出转换 let url = URL(string: "http://google.com")! let safari = SFSafariViewController(url: url) present(safari, animated: true, completion: nil) 但是,我需要相

我试图模仿可以通过
SFSafariViewController
观察到的行为。显示时,推送过渡动画的使用与根
UINavigationalController
一样。在执行“边缘平移”向右滑动时,会出现弹出转换

let url = URL(string: "http://google.com")!
let safari = SFSafariViewController(url: url)
present(safari, animated: true, completion: nil)
但是,我需要相同的转换来处理任何其他
UIViewController

let storyboard = UIStoryboard(name: "Place", bundle: nil)
let controller = storyboard.instantiateInitialViewController()
present(controller!, animated: true, completion: nil)

使用
cattransition
可以在显示
ViewController

    let controller = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()

    let transition = CATransition()
    transition.duration = 0.5
    transition.type = kCATransitionPush
    transition.subtype = kCATransitionFromRight
    view.window!.layer.add(transition, forKey: kCATransition)
    present(controller, animated: false, completion: nil)

@福星,在没有导航控制器的情况下,无法推送视图控制器。推送视图控制器有两个选项

let viewToPush = YourViewController()
let nav = UINavigationController(rootViewController: viewToPush)    
nav.pushViewController(nav, animated: true)
  • 将导航控制器添加到情节提要中的viewController
  • 创建导航控制器的对象

    let viewToPush = YourViewController()
    let nav = UINavigationController(rootViewController: viewToPush)    
    nav.pushViewController(nav, animated: true)
    

  • 您始终可以使用自定义转换显示和取消显示。看看这个,可能会有帮助。我不明白第二个选择。我当前的视图控制器没有导航控制器。只需复制我回答中提到的代码,并用您自己的视图控制器替换您的视图控制器即可。