我一直在努力学习如何最近使用代理,实际上似乎在很大程度上理解它。但是我有一个问题。
我有1个GameViewController,1个StartScene和1个MenuScene
在我的GameViewController中,我有两种方法可以从MenuScene调用。到目前为止,我一直在使用NSNotification,它工作正常,但我正在尝试使用代理。
所以我在MenuScene
中设置了一个协议 protocol MenuSceneDelegate {
func gameOver()
func showGameCenter()
}
我比这样引用它
var menuSceneDelegate: MenuSceneDelegate?
在GameViewController中,我在顶部添加了MenuSceneDelegate。到目前为止,一切都很标准。但是我遇到的主要问题是当我在GameViewController中设置委托时如此
let skView = view as! SKView!
var scene = StartScene(size: skView.bounds.size)
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
skView.presentScene(scene)
scene.menuSceneDelegate = self //Sets delegate to StartScene not MenuScene
它仅适用于StartScene。如何将GameViewController委托从StartScene设置为MenuScene。如果我首先展示MenuScene,一切正常。但是我首先介绍了StartScene,因此我想了解如何将委托设置为MenuScene。
我尝试了下面这样的事情,但它不起作用,只是看起来不对
var menuScene = MenuScene(size: skView.bounds.size)
menuScene.menuSceneDelegate = self
我将不胜感激任何帮助或支持。非常感谢你