Ios 在SpriteKit游戏的主ViewController中调用presentViewController

Ios 在SpriteKit游戏的主ViewController中调用presentViewController,ios,iphone,objective-c,uiviewcontroller,Ios,Iphone,Objective C,Uiviewcontroller,我正在构建spritekit游戏,我需要提供另一个viewController,而不是主viewController。 我尝试与代表和通知中心一起执行此操作,以向新视图控制器发送请求。这两种方法都正确地在SkScene tuGameOver的主viewControllertuViewController中调用了此函数。关键是要正确显示FaceBookLikeView控制器 当这个函数被执行时,我得到了NSlog,在这之后,以NSException SIGABRT Error类型的未捕获异常终止

我正在构建spritekit游戏,我需要提供另一个viewController,而不是主viewController。 我尝试与代表和通知中心一起执行此操作,以向新视图控制器发送请求。这两种方法都正确地在SkScene tuGameOver的主viewControllertuViewController中调用了此函数。关键是要正确显示FaceBookLikeView控制器

当这个函数被执行时,我得到了NSlog,在这之后,以NSException SIGABRT Error类型的未捕获异常终止

我还尝试将此函数修改为:

-(void)showShareScreen{
    NSLog(@"VIEWCONTROLER RECEIVED");

    UIViewController *vc = [[UIApplication sharedApplication] keyWindow].rootViewController;
        FacebookLikeViewDemoViewController *helpVC = [[FacebookLikeViewDemoViewController alloc]init];
    [vc presentViewController: helpVC animated: YES completion:nil];
}
有了这个,我没有崩溃,出现了一些东西,但这是一个空白的黑屏

FaceBookLikeViewViewController是典型的viewController类,固定在情节提要中的视图控制器上。 有什么想法吗?

试试下面的代码:

 FacebookLikeViewDemoViewController *helpVC = [[FacebookLikeViewDemoViewController alloc]initWithNibName:@"FacebookLikeViewDemoViewController" bundle:nil];
        [self.navigationController pushViewController:helpVC animated:YES] ;
Gluckle想出了一个在SKScene中展示VC的解决方案。下面是他的解决方案的要点。我已经将它添加到touchesbreated:method中,以便您可以轻松地测试它

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    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];

    UIGraphicsBeginImageContextWithOptions(Sview.bounds.size, Sview.opaque, 0.0);
    [Sview.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    UIActivityViewController* activityViewController =
    [[UIActivityViewController alloc] initWithActivityItems:@[screenshot] applicationActivities:nil];

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

他最初的问答是。

我从函数收到了Nslog,但没有发生更多的事情,没有崩溃和当前viewController在故事板中向当前viewController添加导航控制器我无法将导航控制器添加到当前主viewController,我只能添加导航栏,这不会改变任何东西。@karek你能用图像编辑你的回答吗?我不知道如何用这个来解决我的问题,你能给我举一个viewController的例子吗?我阅读了你提供的q&a,但它没有帮助我解决这个问题。@karek-你不想在VC中展示Facebook/Twitter吗?我想展示我在其中创建Facebook插件的ViewController,使用github的FaceBookLikeView组件。@karek-我发布的代码截取屏幕快照并显示活动控制器,然后用户可以选择邮件、打印、推特、facebook等。我更愿意坚持我的想法,我只需要喜欢游戏中的页面,我有喜欢的代码,我只需要将SkScene中的ViewController与通知中心一起呈现。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    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];

    UIGraphicsBeginImageContextWithOptions(Sview.bounds.size, Sview.opaque, 0.0);
    [Sview.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    UIActivityViewController* activityViewController =
    [[UIActivityViewController alloc] initWithActivityItems:@[screenshot] applicationActivities:nil];

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