【发布时间】:2015-08-24 20:45:29
【问题描述】:
我最近一直在尝试学习如何使用委托,并且实际上似乎大部分都理解了它。但是我有一个问题。
我有 1 个 GameViewController、1 个 StartScene 和 1 个 MenuScene
在我的 GameViewController 中,我想从 MenuScene 调用 2 个方法。到目前为止,我一直在使用 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
我将不胜感激任何帮助或支持。非常感谢
【问题讨论】: