【问题标题】:How to present a modal view in sprite kit?如何在 sprite kit 中呈现模态视图?
【发布时间】:2013-10-21 20:52:00
【问题描述】:

如何将 Game Center 或 GameKit 框架与 Sprite Kit Xcode 模板一起使用?在 Sprite 套件中,它使用场景;但通常要查看排行榜,例如您需要“presentModalViewController”,但这在 SKView 中是不可能的。

提前致谢!

【问题讨论】:

    标签: ios xcode ios7 presentmodalviewcontroller sprite-kit


    【解决方案1】:

    Smick 为我遇到的类似问题指出了正确的方向。我需要从我的 SKScene 向主 ViewController 发送一条消息。这是为我做的:

    在您的 SKScene 中,导入 ViewController

    #import "MyViewController.h"
    

    然后给它发消息:

    [(MyViewController *)self.view.window.rootViewController  myMethod];
    

    您可以尝试在 ViewController 中创建一个为您打开 GameKit 视图的方法,该方法由 SKScene 触发。 谢谢斯米克!

    【讨论】:

      【解决方案2】:

      必须在您的 SKView 所在的视图控制器上调用 presentModalViewController。

      【讨论】:

      • 你能详细说明我如何将它连接到我用作按钮的 SKLabelNode
      • 如果您使用 sprite kit 模板创建游戏,它会为您创建一个视图控制器。 SKLabelNode 继承了 UIResponder 所以 addTarget:action:forControlEvents: 应该可以工作。
      • 我在我的 SKView 中试过这个,但它不起作用。帮助! - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint 位置 = [触摸 locationInNode:self]; SKNode *node = [self nodeAtPoint:location]; //如果按钮被触摸... if ([node.name isEqualToString:@"achievements"]) { //做任何事情... UIViewController *vc = self.view.window.rootViewController; [bttn addTarget:vc action:@selector(gamecenter) forControlEvents:UIControlEventTouchUpInside]; } }
      【解决方案3】:

      你也可以在storyboard中设置设置视图,即

      然后,如果您添加一个精灵并使用一个按钮,即_settingsBtn,它将执行segue

          - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
          {
              UITouch* touch = [touches anyObject];
              CGPoint location = [touch locationInNode:self];
      
              if ([_settingsBtn containsPoint:location]) {
                  UIViewController *vc = self.view.window.rootViewController;
                  [vc performSegueWithIdentifier:@"settingsPushSegue" sender:self];
              }
          }
      

      然后你可以使用 unwind segue 来移除它,只是一个 UIButton。

      在你的视图控制器类中有这个..

      - (IBAction)unwindToHideSettingsModal:(UIStoryboardSegue *)unwindSegue
      {
          //NSLog(@"UNWILD");
      }
      

      所以现在在情节提要上,从添加到绿色退出转场的按钮控制拖动,然后选择上面的展开转场。

      现在您将按预期显示和隐藏它。您可以在故事板中设计您的设置 UI 等。

      这应该让你开始。

      【讨论】:

      • 它不工作。我试图在情节提要上显示 GKGameCenterViewConroller 而不是视图。
      • 张贴你的应用,如果你喜欢的话,看起来很糟糕
      • 这显示了一个模态视图,我没有在 ios7 上使用过游戏中心,所以如果你得到这本书raywenderlich.com/53279/…它可能是最好的,它涵盖了所有游戏中心信息
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多