如何从 SKScene 中执行 segue?
Posted
技术标签:
【中文标题】如何从 SKScene 中执行 segue?【英文标题】:How to perform segue from within a SKScene? 【发布时间】:2013-10-02 17:04:03 【问题描述】:我一直在尝试从 sprite kit SKScene 层中执行转场。我的应用程序要求用户触摸场景上的图像,这会推动一个新的 UIViewController。但是每次我尝试从 SKScene 游戏层中执行时,它都会给我输出没有标识符错误的 segue。我确实有一个 segue 并用标识符指定了它。
我的简单问题是,如何在运行 SKScene 游戏层的情况下进行 segue?请帮帮我。
【问题讨论】:
【参考方案1】:Segue 属于视图控制器,而不是 SpriteKit 场景。如果您想从 SpriteKit 节点的事件处理代码中执行转场,您需要查找拥有呈现场景的视图的视图控制器。例如,在SKScene
子类'touchesBegan:withEvent:
方法中:
UIViewController *vc = self.view.window.rootViewController;
[vc performSegueWithIdentifier:@"id" sender:nil];
【讨论】:
这对我不起作用,我不得不在这里使用答案:***.com/questions/27053436/… @RachelHarvey:对不起,我的答案中的代码只是如何获得可以从中进行选择的 VC 的一个示例。你真正需要的是一个拥有场景并拥有你正在寻找的segue的视图控制器——如果你的SKScene
出现在选项卡视图控制器或导航控制器内的视图控制器中,根VC可能是' t 有你的转场。【参考方案2】:
斯威夫特版本:
self.view!.window!.rootViewController!.performSegueWithIdentifier("gameOverSegue", sender: self)
【讨论】:
请在你的回答中添加一些解释!以上是关于如何从 SKScene 中执行 segue?的主要内容,如果未能解决你的问题,请参考以下文章
如何从sks文件加载节点,然后应用在Scene Editor中定义的操作
从文件加载 SKScene 而不调用 init(fileNamed:"") 的方法
子类化使用 SpriteKit .sks 场景文件创建的 SKNode