2017-09-14 6 views
0

저는 두 개의 뷰 컨트롤러 vc1과 vc2 사이를 이동할 코드를 구현하려고합니다.스위프트에서 뷰 컨트롤러 간 전환

vc1은 2 개의 SKViews를 토글하며, vc2는 UIView에 간단한 것들을 표시합니다.

vc1과 vc2는 모두 주요 스토리 보드에 있습니다.

VC1 다음이 VC2로 segues SKScene 한 시점에서, 먼저 표시된다 VC2에 잠시 후

let currentViewController: UIViewController = (self.view?.window?.rootViewController)! 
currentViewController.performSegue(withIdentifier: "VC1toVC2", sender: currentViewController) 

그것은 VC1 다시 segues :

self.performSegue(withIdentifier: "VC2toVC1", sender: self) 

이 segues을 작업.

그런 다음, (같은 SEGUE를 사용하여) 위와 같은 코드 :

let currentViewController: UIViewController = (self.view?.window?.rootViewController)! 
currentViewController.performSegue(withIdentifier: "VC1toVC2", sender: currentViewController) 

...이 VC2로 VC1에서 SEGUE 위해 작동하지 않습니다 2 시간. vc2가 표시되지 않는다는 예외는 없습니다.

나는 예를 들어, 문제를 해결하지 않는 일부 다른 게시물을 발견 : * Swift segue not working?은 - UI 업데이트는 메인 스레드에서 수 있으며, 제안 작업을 수행하는 방법을 보여줍니다이 하나가 스위프트 3 - How do I dispatch_sync, dispatch_async, dispatch_after, etc in Swift 3? - - 동일한 결과가 발생합니다. * 다른 게시물은보기 컨트롤러의 .show 또는 .present 메서드를 사용하여 제안되었습니다. 동일한 결과가 나타납니다.

의견/지침?

답변

0

다른 게시물에서 언급 한 것처럼 델리게이트를 사용하여이를 해결했습니다 (예 : How to call method from ViewController in GameScene). 델리게이트는 SKScene 객체가 View Controller에서 코드를 호출하거나 실행할 수 있도록합니다. 이를 통해 View Controller는 SKScene 객체에서 segue를 수행하는 대신 segue를 수행 할 수 있습니다 (SKScene 객체에서 segue를 수행하는 것이 가능하지는 않습니다). Swift의 대표자들에게 익숙하지 않다면 간단한 튜토리얼도 있습니다. https://useyourloaf.com/blog/quick-guide-to-swift-delegates/. 누구에게나 도움이된다면 더 자세한 정보를 게시 할 수 있습니다.