以下一段代碼在iOS 6.0(模擬器和設備)上都很好用。遊戲中心呈現的很好。但它在iOS 5.0模擬器上沒有做任何事情。不幸的是,我沒有iOS 5.0的設備,所以我無法檢查它是否與模擬器相關的問題。iOS 5.0模擬器:GKLeaderBoardViewController不顯示
- (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]委託] .window.rootViewController都不是零嗎?排行榜呢?你是否也嘗試在調試和發佈之間切換,以確保你的排行榜不會被過早釋放?你在控制檯中看到任何日誌輸出嗎? –
是的,你是對的,[[UIApplication sharedApplication]委託] .window.rootViewController是零。多麼愚蠢的錯誤!這就是你複製粘貼太多的地方:(。 – illyge
很酷!如果你把我的最新答案標記爲正確,我會很感激。謝謝。 –