GKGameCenterViewController始终显示挑战而不是排行榜

Pet*_*erK 7 objective-c uiviewcontroller ios game-center

我正在使用Apple的代码来显示GKGameCenterViewController:

GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
if (gameCenterController != nil) {
    gameCenterController.gameCenterDelegate = self;
    [self presentViewController:gameCenterController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

这是描述上述代码的文本:

游戏中心UI由您的视图控制器(iOS)显示

Game Kit使用的约定是为您的一个视图控制器提供Game Kit视图控制器.您的视图控制器充当它所呈现的视图控制器的委托,以便在玩家完成查看显示的屏幕时通知它.清单2-1显示了此模式的最常见用法,即显示Game Center用户界面.游戏中心视图控制器显示许多不同的游戏中心内容,因此大多数游戏应该提供一个按钮,将玩家带到此屏幕,即使游戏还使用自定义用户界面显示游戏中心内容.

当我使用推荐的代码时,我会进入这个屏幕(GameCenter Challenges),这不是我想要的:

GameCenter挑战赛屏幕

我也试过这段代码:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"gamecenter:"]];
Run Code Online (Sandbox Code Playgroud)

通过使用该代码,我进入我希望显示的屏幕:

在此输入图像描述

我是误解了什么,还是我做错了什么?第一段代码不应该把我带到主菜单吗?为什么不显示排行榜?

UPDATE

viewState按照phix23的建议实现:

GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
if (gameCenterController != nil) {
    gameCenterController.gameCenterDelegate = self;
    gameCenterController.viewState = GKGameCenterViewControllerStateLeaderboards;
    [self presentViewController:gameCenterController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

但是,它仍然显示相同的挑战屏幕,尽管事实上我想要/尝试显示排行榜屏幕.

Fel*_*lix 1

自 iOS 6 起可用,它GKGameCenterViewController可以显示启用游戏中心的应用程序的排行榜、成就和挑战。

viewState您可以通过设置的来更改初始视图GKGameCenterViewController。如果您不设置此属性,它将显示默认视图,即您案例中的挑战视图。我猜您没有设置任何排行榜或成就,因此没有任何内容可显示。