以下代码在 iOS 6.0(模拟器和设备)上运行良好。游戏中心很好。但它在 iOS 5.0 模拟器上什么也没做。不幸的是,我没有装有 iOS 5.0 的设备,所以我无法检查这是否是与模拟器相关的问题。
- (void)showLeaderboard:(NSString *)leaderboard
{
GKLeaderboardViewController * leaderboardViewController = [[GKLeaderboardViewController alloc] init];
leaderboardViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
[leaderboardViewController setCategory:leaderboard];
[leaderboardViewController setLeaderboardDelegate:self];
[[[UIApplication sharedApplication] delegate].window.rootViewController presentViewController:leaderboardViewController animated:YES completion:^{
}];
[leaderboardViewController release];
}
那么会发生什么?没有什么。不显示视图。它不会将任何消息记录到控制台中。它甚至没有到达完成块。我试着到处玩,这就是我设法弄清楚的。我使用继承自的 CustomLeaderboardViewControllerGKLeaderboardViewController
而不是 pure GKLeaderboardViewController
,并在 shouldAutorotateToInterfaceOrientation 方法中放置一个断点。它不会使用上面的代码触发。但是如果我使用
setCategory:nil
而不是
setCategory:leaderboard
那个断点触发。仍然没有进一步发生,并且没有调用完成块。任何想法为什么会发生这样的事情?