当我触摸SKSpriteNode
时,我想从SKScene
移动到视图控制器,当我触摸UIButton
时,我想返回到SKScene
。它从视图控制器到SKScene
以及相反的方式工作,但只有第一次。当我然后返回到我的场景并再次移动到视图控制器时(第二次),我可以听到音乐,它打印了viewDidLoad
的所有内容,但它没有显示UI元素。我驳回了场景,所以这可能不是问题所在。
下面是从场景移回视图控制器的代码。
let currentViewController:UIViewController = UIApplication.shared.keyWindow!.rootViewController!
currentViewController.present(ViewController(), animated: false, completion: nil)
或
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier :"VC")
let currentViewController:UIViewController = UIApplication.shared.keyWindow!.rootViewController!
currentViewController.present(viewController, animated: false, completion: nil)
2条答案
按热度按时间41zrol4v1#
将与
currentViewController
相关的代码替换为:你也可以在
Storyboard
中创建一个segue
,并像这样调用它:编辑:
我已经尝试了我的应用程序之一,现在下一个解决方案,它的工作:
对我来说它起作用了,我希望它能解决你的案子:)
gkn4icbw2#
新方案:
假设你有一个名为“GameViewController”的视图控制器文件,它与名为“GameScene”的文件相链接。您想从“GameScene”移动到“NextViewController”。
请仔细遵循以下步骤:
1.在故事板中创建一个从“GameViewController”屏幕到“NextViewController”的手动segue关系,例如选择“Show”
1.在属性检查器中:使用下拉菜单分配标识符(例如“ShowNext”)、类(例如“ShowSegue”)和模块。
1.在“GameViewController”中创建一个名为“ShowSegue”的类,如图所示,并确保导入UIKit和SpriteKit:
1.在“viewDidLoad()”函数内的GameViewController类中添加以下代码:
1.在“GameScene”文件中,在顶部添加以下代码,确保导入SpriteKit:
1.在“GameScene”类的didMove()函数中添加:
1.在触发按钮按下的函数中添加代码:
根据需要更改变量的名称。