从SKScene展示一个UIViewController

我试图从SKScene提出一个UIViewController,我不知道如何做到这一点。 Googlesearch提供的大部分内容是如何从SKScene展示共享屏幕,但这不是我想要做的。 只是一个常规的视图控制器,将有一个button和一个标签(也可能是一个图像)。

这是我的Intro.m中的代码。 这不是游戏场景,只是带有标题,播放button和删除广告button的介绍屏幕:

#import "MyScene.h" #import "Intro.h" #import "PurchasedViewController.h" @interface PurchasedViewController () -(id)initWithSize:(CGSize)size { if (self = [super initWithSize:size]) { ..... SKSpriteNode *removeAds = [SKSpriteNode spriteNodeWithImageNamed:@"removeAds"]; removeAds.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMaxY(self.frame)/6); removeAds.zPosition = 1; removeAds.name = @"RemoveAds"; [self addChild:removeAds]; } - (void)performTouches:(NSSet *)touches { for (UITouch *touch in touches) { CGPoint pointInSKScene = [self.view convertPoint:[touch locationInView:self.view] toScene:self]; SKNode *touchedNode = [self nodeAtPoint:pointInSKScene]; if ([touchedNode.name isEqualToString:@"RemoveAds"]) { [self runAction:[SKAction playSoundFileNamed:@"enter.mp3" waitForCompletion:NO]]; UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"PurchasedViewController"]; [self presentViewController:vc animated:YES completion:nil]; } } } 

Xcode给我的错误是“没有可见的@interface为介绍声明'presentViewController:animation:完成'。

我有点难过,因为我还没有试图从SKScene提出一个UIViewController,并且无法在网上find解决scheme。

我发现了一个比大多数解决scheme简单得多的解决scheme:

 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"PurchasedVC"]; //Call on the RootViewController to present the New View Controller [self.view.window.rootViewController presentViewController:vc animated:YES completion:nil]; 

如果你在Storyboard中创build一个segue并给它一个标识符,我还想出了一个更简单的一行:

 [self.view.window.rootViewController performSegueWithIdentifier:@"PurchasedViewController" sender:self];