当我浏览苹果文档时,我看不到打开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];
谢谢!
答案 0 :(得分:6)
这是一个无证的解决方法,但在我参与的多个游戏中获得批准:
GKLeaderboardViewController *viewController = [[GKLeaderboardViewController alloc] init];
viewController.leaderboardDelegate = self;
[viewController popViewControllerAnimated:NO];
[parent presentModalViewController:viewController animated:YES];
[viewController release];
说明:
GKLeaderboardViewController
是UINavigationController
您可以跳过设置类别和时间范围,因为您不需要它们(您不会显示特定的“类别”视图控制器)。即使您没有设置它,排行榜视图控制器也会将默认视图控制器推到最顶层。
我还发布了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)
苹果公司的答案是,目前无此功能。