【问题标题】:Present another view controller scene created in main.storybord from a SKScene从 SKScene 呈现在 main.storybord 中创建的另一个视图控制器场景
【发布时间】:2016-07-31 09:58:41
【问题描述】:

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

谁能告诉我如何使用 NSNotificationCenter 来使用 swift 从 PlayGameScene 呈现 GameEndViewController,或者将我链接到我可以学习它的网站?

提前致谢!

【问题讨论】:

  • 太宽泛:可能的答案太多,或者对于这种格式来说,好的答案太长了。请添加详细信息以缩小答案集或隔离可以在几段中回答的问题

标签: ios swift sprite-kit nsnotificationcenter skscene


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我发现,我可以使用 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 中创建了转场。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多