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

Ida*_*dan 1 iphone cocoa-touch leaderboard game-center

当我浏览苹果文档时,我看不到打开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];
Run Code Online (Sandbox Code Playgroud)

谢谢!!

Iva*_*ica 6

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

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

    [viewController popViewControllerAnimated:NO];
    [parent presentModalViewController:viewController animated:YES];
    [viewController release];
Run Code Online (Sandbox Code Playgroud)

说明:

  • GKLeaderboardViewController 是.的子类 UINavigationController
  • 特定类别的视图控制器自动位于排行榜视图控制器的导航堆栈之上
  • 在显示之前,您可以修改导航堆栈
  • 通过不动画,弹出立即发生,并且在视图控制器被呈现之前.

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

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


iOS 6及更高版本拥有GKGameCenterViewController该类.弱连接到GameKit并测试这个类的存在NSClassFromString(@"GKGameCenterViewController") != nil.然后,像往常一样使用它.

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