2017-09-14 4 views
0

私は、2つのビューコントローラ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を作業。

そして、(同じセグエを使用)上記のように同じコードを有する:

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

...それはVC2にVC1からセグエするために動作しない2回目。 vc2が表示されないという例外はありません。

私には、例えば、問題に対応していないいくつかの他の記事が見つかりました:* Swift segue not working? を - UIの更新がメインスレッドでなければならないことを示唆している、とスウィフト3であることを行う方法を示し、この1 - 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/という簡単なチュートリアルもあります。それが誰にも役立つなら、私はもっと詳細を投稿することができます。

関連する問題