在SKScene上呈现一个viewController

我想在SkView上呈现UIActivityViewController ,但xcode给了我这个错误:

'GameOver'没有可见的@interface声明select器'presentViewController:animated:completion:'

 - (void)shareScore { //add view UIView *Sview = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 512, 512)]; UIImageView *image = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"shareScoreImg.png"]]; image.frame = Sview.frame; [Sview addSubview:image]; //add label CGRect fframe = self.view.frame; UILabel *score = [[UILabel alloc] initWithFrame:fframe]; score.text = @"9999"; score.textAlignment = NSTextAlignmentCenter; score.textColor = [UIColor darkGrayColor]; score.center = CGPointMake(250, 440); score.font = [UIFont fontWithName:@"Pixel LCD7" size:50]; [Sview addSubview:score]; //capture view UIGraphicsBeginImageContextWithOptions(Sview.bounds.size, Sview.opaque, 0.0); [Sview.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage * screenshot = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIActivityViewController* activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[screenshot] applicationActivities:nil]; [self presentViewController:activityViewController animated:YES completion:nil]; } 

如何在SKScene上显示预设的viewController? 谢谢 。

我们可以使用“presentModalViewController”通过使用这段代码来访问根视图控制器

  UIViewController *vc = self.view.window.rootViewController; [vc presentViewController: activityViewController animated: YES completion:nil]; 

现在它工作正常!

IIRC您创build的第一个SKScene位于SKView内部。

这个SKViewUIViewController里面。

您可以使用属性或委托或任何您喜欢的方式通过SKViewSKScene访问UIViewController上的方法。 甚至使用通知。

然后在UIViewController上,你可以呈现没有问题的新视图控制器。