2015-10-07 39 views
0

你好我有代码设置应该正确地从GameScene继承到另一个视图控制器mainMenuViewController。我已成立了实现这一目标的代码是如何适当地延续到不同的ViewController

var viewController: GameViewController! 
func segue() { 
    viewController.dismissViewControllerAnimated(true, completion: nil) 
    SettingsViewController.delete(self) 
} 

在GameViewController

当SKLabelNode被点击时调用。因为mainMenu是当玩家开始游戏时首先加载的场景,所以我收到了一些建议,因为我们被告知忽略GameScene,而不是每次都创建一个新的segue。我得到错误'致命错误:意外地发现零,同时解开一个可选值',并在按钮被点击时崩溃。我假设它正在讨论viewController。感谢您的帮助!

回答

1

如果您的问题理解正确,那么您试图关闭GameViewController。但方法dismissViewControllerAnimated只会解散您当前正在呈现的控制器。因此,当你的游戏视图控制器没有提供任何东西时,它不能解除它。正如你所说的从代码到GameViewController解除由他提供的控制器,它试图按照你的意愿去做,所以他得到了他提供的视图控制器的属性并试图解雇它,但是该属性是零,所以这样的错误得到了。要解决这个问题,您应该拨打viewController.presentingViewController.dismissViewControllerAnimated(true, completion: nil)。 属性presentsViewController返回呈现给你的控制器,在你的case控制器中呈现GameViewController。当你得到这个控制器时,你可以解除他提供的控制器(在你的情况下,控制器是你的GameViewController)。所以逻辑是得到说有“解除自己的权限”的“父”控制器(GameViewController)

+0

现在我得到了长错误***终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因:'+ [Noble_Ninja.SettingsViewController删除:]:无法识别的选择器发送到类0x10011c990' ***第一次扔调用堆栈: (0x186074f5c 0x19ab7bf80 0x18607bb64 0x186078c14 0x185f7cdcc 0x1000f90f4 0x1000f9c4c 0x1000f9d8c 0x18b433a2c 0x18b6016e0 0x18b5faac0 0x18b5cba10 0x18b5c9efc 0x18602c5a4 0x18602c038 0x186029d38 0x185f58dc0 0x1910ac088 0x18b632f44 0x1001115e8 0x19b3a68b8) 的libC++ abi.dylib:与类型NSException的未捕获的异常终止” – Kevin

1

我需要看你的代码。它现在接缝,你尝试调用方法删除来查看控制器,但正如我所知,视图控制器没有这样的。所以认为这是程序中的其他错误,主要是将Noble_Ninja.SettingsViewController设置为期望拥有此类方法的其他对象。这是我的预测,我不能说清楚什么,因为我只有异常描述。试着找到你在代码中调用这个方法的位置,然后把刹车点放在那里,当程序在刹车点停下来写入你的控制台(日志) - (po NAME_OF_INSTANCE_THAT_CALLS_SUCH_METHOD)时,它会显示真实的实例类型,所以你可以使用这个信息检测真正的问题在哪里。祝你好运

相关问题