【发布时间】:2015-01-19 03:08:51
【问题描述】:
在我的 GameScene.swift 文件中,我试图像这样执行回到我的菜单视图控制器的 segue:
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 标识符,它确实是“菜单”。
【问题讨论】:
-
segue 用于从一个视图控制器到另一个视图控制器,而不是从一个场景到视图控制器
-
您需要从场景的 viewController 调用 segue,而不是从根 viewController 调用。
标签: ios swift sprite-kit segue