Ios 在场景中显示CenterViewController
我正在努力解决以下问题: 我用SpriteKit做了一个游戏。我在我的游戏中实现了Ios 在场景中显示CenterViewController,ios,sprite-kit,game-center,viewcontroller,skscene,Ios,Sprite Kit,Game Center,Viewcontroller,Skscene,我正在努力解决以下问题: 我用SpriteKit做了一个游戏。我在我的游戏中实现了GameCenter。它起作用了。玩家自动登录,高分将添加到默认排行榜。但例如,在“EndScreen”中,我想显示GameCenterLeadboard Appledocumentation告诉我应该使用以下代码: - (void) showGameCenter { GKGameCenterViewController *gameCenterController = [[GKGameCenterViewCon
GameCenter
。它起作用了。玩家自动登录,高分将添加到默认排行榜。但例如,在“EndScreen”中,我想显示GameCenterLeadboard
Appledocumentation告诉我应该使用以下代码:
- (void) showGameCenter
{
GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
if (gameCenterController != nil)
{
gameCenterController.gameCenterDelegate = self;
[self presentViewController: gameCenterController animated: YES completion:nil];
}
}
但是presentViewController
不工作。有没有办法从SKScene
切换到我的标准ViewController
。或者,我如何在按下按钮的情况下显示GameCenter排行榜
老实说,我对编程很陌生,所以这个问题对你们来说可能不是一个大问题。
非常感谢您的帮助。是的,有一种方法,您可以直接从
-(void)showGameCenter
调用此代码:
UIViewController *vc = self.view.window.rootViewController;
[vc presentViewController: gameCenterController animated:YES completion:Nil];
您可以使用通知告诉
ViewController
显示排行榜
ViewController.m
:
@implementation GameSceneViewController
- (void)awakeFromNib {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(showGameCenter)
name:@"ShowLeaderboard"
object:nil];
}
- (void) dealloc
{
// If you don't remove yourself as an observer, the Notification Center
// will continue to try and send notification objects to the deallocated
// object.
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
.....
- (void)showLeaderboard {
[[NSNotificationCenter defaultCenter]
postNotificationName:@"ShowLeaderboard"
object:nil
userInfo:nil];
}
SKScene.m
:
@implementation GameSceneViewController
- (void)awakeFromNib {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(showGameCenter)
name:@"ShowLeaderboard"
object:nil];
}
- (void) dealloc
{
// If you don't remove yourself as an observer, the Notification Center
// will continue to try and send notification objects to the deallocated
// object.
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
.....
- (void)showLeaderboard {
[[NSNotificationCenter defaultCenter]
postNotificationName:@"ShowLeaderboard"
object:nil
userInfo:nil];
}