GameScene.swiftからViewControllerのdissmissViewControllerAnimatedを呼ぶ
はまりながらもstackoverflowの記事に当たり、何とか解決
やりたい事
- GameScene.swiftでUIButton生成
- ButtonタップでViewControllerのdissmissViewControllerAnimatedを呼ぶ
参考リンク
ios - How to call method from ViewController in GameScene - Stack Overflow
対応内容
- GameSceneにviewControllerプロパティを作成
class GameScene : SKScene, SKPhysicsContactDelegate { var viewController: ViewController!
- ViewControllerではGameScene作成時にself(ViewController)を代入
// シーン作成 let scene = GameScene() scene.viewController = self
- これでGameScene内でButtonのaddTargetでタップされた時に呼ぶ事が出来る
// ボタンを生成 let homeIcon = UIButton(frame: CGRectMake(50, 400, 200, 50)) homeIcon.setImage(UIImage(named: "home"), forState: .Normal) homeIcon.addTarget(self, action: "backToMenu:", forControlEvents: .TouchUpInside) self.view!.addSubview(homeIcon) func backToMenu (sender: UIButton) { self.viewController.dismissViewControllerAnimated(true, completion: nil) }