从 SKScene 展示在 main.storybord 中创建的另一个视图控制器场景

Present another view controller scene created in main.storybord from a SKScene

我正在努力尝试展示一个名为 GameEndViewController 的视图控制器,我在 main.storyboard 中使用来自名为 PlayGameScene 的 SKScene 的自动布局创建了一些按钮和标签。我不知道如何使用 NSNotificationCenter 让 GameViewController 呈现 GameEndViewController。

任何人都可以告诉我如何使用 NSNotificationCenter 在 PlayGameScene 中使用 swift 呈现 GameEndViewController,或者 link 我可以去一个可以学习它的网站吗?

提前致谢!

您没有使用 NSNotificationCenter 来呈现新视图。 NSNotifications 可用于应用程序的一部分,以告诉应用程序的另一部分发生了异步事件,但这听起来不像您要求的那样。

要在游戏结束时显示一个新的视图控制器,请在情节提要中为其创建一个转场,然后按照 in this SO answer 所述以编程方式触发该转场。

但是,作为替代方案,请考虑保留在同一个视图控制器中,而不是在您的 SKView 中呈现 'game end' SKSCene,因为这可能会提供更好的用户体验。

我发现,我可以使用 NSNotificationCenter 告诉 SKScene 的视图控制器通过触发在故事板中创建的 segue 来更改视图。

我将以下代码写入 GameViewController:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "showGameEndViewController", name: "showGameEndViewController", object: nil)
}
func showGameEndViewController() -> Void {
    performSegueWithIdentifier("gameOverSegue", sender: nil)
}

作为 NSNotificationCenter 消息的接收者工作。

接下来我将发件人代码添加到 SKScene:

        self.view?.presentScene(nil)
    NSNotificationCenter.defaultCenter().postNotificationName("showGameEndViewController", object: nil)

最后我在 GameViewController 和 GameEndViewController 之间的 main.storyboard 中创建了 segue。