
func returnToMainMenu(){ var vc: UIVIEwController = UIVIEwController() vc = self.vIEw!.window!.rootVIEwController! vc.performSegueWithIDentifIEr("menu",sender: vc)} 点击节点时会运行此方法:
overrIDe func touchesEnded(touches: NSSet,withEvent event: UIEvent) { for touch: AnyObject in touches { let location = touch.locationInNode(self) if gameOn == false{ if restartBack.containsPoint(location){ self.restartGame() } else if menuBack.containsPoint(location){ self.returnToMainMenu() } else if justBegin == true{ self.restartGame() } } }} menuBack是返回菜单的按钮.每次运行此代码时,都会抛出NSException:
Terminating app due to uncaught exception 'NSinvalidargumentexception',reason: 'Receiver (<ProxyBlock.Menu: 0x165a3e90>) has no segue with IDentifIEr 'menu''
我检查了我的segue的标识符,它确实是“菜单”.
解决方法 您正在根vIEwController上调用segue.我认为这就是问题所在.你需要在场景的vIEwController上调用segue(我假设你创建了segue,因此它没有在根vIEwController上找到).现在问题是SKScene没有直接访问它的vIEwController,而只是它包含它的视图.您需要手动创建指向它的指针.这可以通过为SKScene创建属性来完成:
class GameScene: SKScene { var vIEwController: UIVIEwController? ...} 然后,在vIEwController类中,就在skVIEw.presentScene(scene)之前
scene.vIEwController = self
现在,您可以直接访问vIEwController.只需在此vIEwController上调用segue:
func returnToMainMenu(){ self.vIEwController.performSegueWithIDentifIEr("menu",sender: vc)} 总结 以上是内存溢出为你收集整理的ios – 在SKScene中使用UIViewController全部内容,希望文章能够帮你解决ios – 在SKScene中使用UIViewController所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)