iPhone - 游戏中心选择排行榜屏幕 - 如何显示?

时间:2010-12-26 15:17:22

标签: iphone cocoa-touch game-center leaderboard

当我浏览苹果文档时,我看不到打开Game Center的方法,第一个屏幕就是用户可以选择排行榜的位置。

我知道我可以打开一个特定的排行榜屏幕,但我想打开让用户选择一个的屏幕。那可能吗?

这是我目前的代码:

GKLeaderboardViewController *viewController = [[GKLeaderboardViewController alloc] init];
        viewController.leaderboardDelegate = self;
        // Present leaderboard with the user's options saved from prevous launch
        viewController.category = self.category;
        viewController.timeScope = self.timeScope;

        [parent presentModalViewController:viewController animated:YES];

谢谢!

3 个答案:

答案 0 :(得分:6)

这是一个无证的解决方法,但在我参与的多个游戏中获得批准:

    GKLeaderboardViewController *viewController = [[GKLeaderboardViewController alloc] init];
    viewController.leaderboardDelegate = self;

    [viewController popViewControllerAnimated:NO];
    [parent presentModalViewController:viewController animated:YES];
    [viewController release];

说明:

  • GKLeaderboardViewControllerUINavigationController
  • 的子类
  • 特定类别的视图控制器自动位于排行榜视图控制器的导航堆栈之上
  • 在显示之前,您可以修改导航堆栈
  • 通过不动画,立即弹出,甚至在视图控制器出现之前。

您可以跳过设置类别和时间范围,因为您不需要它们(您不会显示特定的“类别”视图控制器)。即使您没有设置它,排行榜视图控制器也会将默认视图控制器推到最顶层。

我还发布了viewController变量(排行榜视图控制器),因为parent视图控制器将获取对象的所有权。因此,不释放它会造成内存泄漏,并可能产生其他意外后果。


iOS 6及更高版本具有GKGameCenterViewController类。弱链接到GameKit并使用NSClassFromString(@"GKGameCenterViewController") != nil测试此类的存在。然后,像往常一样使用它。

实例化此类而不是GKLeaderboardViewController,并将其viewState属性设置为GKGameCenterViewControllerStateLeaderboards,以便立即显示排行榜。

答案 1 :(得分:1)

从iOS 6.0开始,您应该这样做:

-(void)showLeaderboards
{
    GKGameCenterViewController *viewController = [GKGameCenterViewController new];
    viewController.viewState = GKGameCenterViewControllerStateLeaderboards;
    viewController.gameCenterDelegate = self;
    [self presentViewController:viewController animated:YES completion:nil];
}

- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)viewController
{
    [viewController dismissViewControllerAnimated:YES completion:nil];
}

答案 2 :(得分:0)

苹果公司的答案是,目前无此功能。