Ios 在SpriteKit游戏的主ViewController中调用presentViewController
我正在构建spritekit游戏,我需要提供另一个viewController,而不是主viewController。 我尝试与代表和通知中心一起执行此操作,以向新视图控制器发送请求。这两种方法都正确地在SkScene tuGameOver的主viewControllertuViewController中调用了此函数。关键是要正确显示FaceBookLikeView控制器 当这个函数被执行时,我得到了NSlog,在这之后,以NSException SIGABRT Error类型的未捕获异常终止 我还尝试将此函数修改为: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类型的未捕获异常终止
-(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];
}