我有一个方法,它在我的viewController中具有自定义序列,如下所示:
func gameOver() {
performSegueWithIdentifier("GameOver", sender: nil)
}
我在GameScene.swift中这样调用方法:
GameViewController().gameOver()
我仔细检查了segue名称,它是正确的。每当我在GameScene.swift文件中调用此命令时,我都会收到SIGABRT消息,但我不知道为什么。我尝试仅使用println()消息调用该函数,并且该函数有效。
对于为什么发生这种情况以及如何成功调用GameScene.swift文件中的方法的任何建议,将不胜感激。
谢谢!
PS这里是崩溃日志:
2015-01-28 21:59:46.181 RunawaySquare[95616:3907041] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<RunawaySquare.GameViewController: 0x7fe4305c7890>) has no segue with identifier 'GameEnd''
*** First throw call stack:
(
0 CoreFoundation 0x000000010d461f35 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010f39ebb7 objc_exception_throw + 45
2 UIKit 0x000000010e20dd3b -[UIViewController shouldPerformSegueWithIdentifier:sender:] + 0
3 RunawaySquare 0x000000010d2683b2 _TFC13RunawaySquare18GameViewController8gameOverfS0_FT_T_ + 914
4 RunawaySquare 0x000000010d261af0 _TFC13RunawaySquare9GameScene12touchesBeganfS0_FTCSo5NSSet9withEventCSo7UIEvent_T_ + 1808
5 RunawaySquare 0x000000010d261c3f _TToFC13RunawaySquare9GameScene12touchesBeganfS0_FTCSo5NSSet9withEventCSo7UIEvent_T_ + 79
6 SpriteKit 0x000000010df4d7e1 -[SKView touchesBegan:withEvent:] + 946
7 UIKit 0x000000010e12d16e -[UIWindow _sendTouchesForEvent:] + 325
8 UIKit 0x000000010e12dc33 -[UIWindow sendEvent:] + 683
9 UIKit 0x000000010e0fa9b1 -[UIApplication sendEvent:] + 246
10 UIKit 0x000000010e107a7d _UIApplicationHandleEventFromQueueEvent + 17370
11 UIKit 0x000000010e0e3103 _UIApplicationHandleEventQueue + 1961
12 CoreFoundation 0x000000010d397551 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
13 CoreFoundation 0x000000010d38d41d __CFRunLoopDoSources0 + 269
14 CoreFoundation 0x000000010d38ca54 __CFRunLoopRun + 868
15 CoreFoundation 0x000000010d38c486 CFRunLoopRunSpecific + 470
16 GraphicsServices 0x000000011480e9f0 GSEventRunModal + 161
17 UIKit 0x000000010e0e6420 UIApplicationMain + 1282
18 RunawaySquare 0x000000010d26cbee top_level_code + 78
19 RunawaySquare 0x000000010d26cc2a main + 42
20 libdyld.dylib 0x000000010fb8a145 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
它说没有segue ID。与“ GameEnd”一起使用,但是只有一个,并且如果在ViewController上使用它就可以工作
之所以不起作用,是因为您正在创建的新实例,GameViewController
然后再调用gameOver
它。您真正想做的是参考现有的GameViewController
有几种方法可以做到这一点,我举一个例子。
将viewController属性添加到您的GameScene类
class GameScene {
// we need to make sure to set this when we create our GameScene
var viewController: GameViewController!
在您的GameViewController文件中
// after GameScene is instantiated
gameScene.viewController = self
现在我们有一个对viewController的引用,让我们在GameScene类中使用它
// somewhere in GameScene
self.viewController.gameOver()
问题内容: 我正在使用MVC3架构,c#.net。当焦点更改到下一个字段(即密码字段)时,我需要立即将文本框内容(用户ID)与数据库进行比较。因此,我想对用户ID字段使用onblur事件,然后再调用Controller方法。有谁能告诉我如何解决这个问题?作为我的新手,代码片段受到高度赞赏。 提前致谢, 普拉山斯 问题答案: 这是一个例子。控制器方法示例 这将是您的javascript函数。
问题内容: 我在Java项目中使用Jython。 我有一个Java类:和一个Python类: Python文件如下: 现在的问题是我想从Java文件的方法调用Python文件的方法并打印结果。 问题答案: 如果我没看错文档,则可以使用以下功能: 或者,如果您想获取字符串: 如果要向其提供Java变量的某些输入,则可以预先使用,而不要在Python代码中使用该变量名:
问题内容: 我已经创建了一个applet,并且将要从Web项目上的HTML页面访问applet方法。 这里我的小程序看起来像: 我的HTML页面如下所示: 但是,当我单击单选按钮时,浏览器将挂起,并且无法访问applet方法。 我的applet类位于默认目录中,而HTML位于WebContent文件夹中。我应该更改我的代码吗? 问题答案: 问题是语句检查: 这与JavaScript不完全一样,因为
问题内容: 我的模板看不到从Spring传递过来的对象。 我的代码: Contoller的代码: 主模板的代码: 片段的代码: 结果,我看到了方法调用的代码,例如 为什么thymeleaf不调用方法,而是在输出页上打印此文本?在http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html的示例中,方法调用具有相同的语法,例如 相同的代
问题内容: 因此,我正在编写一个使用大型c 库的Android应用。我可以正常工作,以便Java应用程序可以调用c 委托方法,但是我发现自己希望自己可以将来自c 的消息记录到Android日志中。从Java上这很容易,但是我不知道如何从c 调用Java方法。我的搜索找到了从c 打开jvm的方法,这根本不是我想要做的。理想情况下,我想将日志方法指针传递给c ,然后可以在需要时使用它。当然,Java不
在GitHub的一个简单应用程序项目中,我只有两个自定义Java文件: MainActivity.java包含与蓝牙和UI相关的源代码 DeviceListAdapter.java包含和,用于在中显示蓝牙设备 MainActivity.java包含一个方法,当用户点击中的蓝牙设备时,该方法将被调用: 我的问题: 如何从s方法调用方法? 我一直在两个Java文件之间移动类声明,并尝试将其放入自己的文