【发布时间】:2013-08-04 07:24:12
【问题描述】:
以下代码在 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];
}
那么会发生什么?没有。不显示视图。它不会将任何消息记录到控制台中。它甚至没有到达完成块。
我试着到处玩,这就是我设法弄清楚的。我使用继承自GKLeaderboardViewController 的CustomLeaderboardViewController 而不是纯GKLeaderboardViewController,并在shouldAutorotateToInterfaceOrientation 方法中放置一个断点。它不会使用上面的代码触发。但是如果我使用
setCategory:nil
代替
setCategory:leaderboard
然后那个断点触发。仍然没有进一步发生,并且没有调用完成块。
有什么想法为什么会发生这样的事情?
【问题讨论】:
-
需要检查的几件事:您确定 leaderboardViewController 和 [[UIApplication sharedApplication] delegate].window.rootViewController 都不是非零吗?排行榜呢?您是否也尝试过在调试和发布之间切换以确保您的排行榜不会过早发布?您在控制台中看到任何日志输出吗?
-
是的,你是对的,[[UIApplication sharedApplication] delegate].window.rootViewController 是 nil。多么愚蠢的错误!这就是当你复制粘贴太多时你得到的地方:(。
-
酷!如果您将我的最新答案标记为正确,我将不胜感激。谢谢。
标签: ios objective-c ios-simulator game-center