2013-08-02 5 views
1

Следующая часть кода работает хорошо на 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]; 
} 

Так что происходит? Ничего. Представления не представлено. Он не регистрирует никаких сообщений в консоли. Он даже не доходит до блока завершения. Я попытался поиграть, и вот что мне удалось выяснить. Я использую CustomLeaderboardViewController, унаследованный от GKLeaderboardViewController вместо чистого GKLeaderboardViewController, и поместите точку останова в методе shouldAutorotateToInterfaceOrientation. Он не срабатывает с кодом выше. Но если я использую setCategory:nil вместо setCategory:leaderboard тогда этот контрольный точка срабатывает. Все еще ничего не происходит дальше, и блок завершения не вызывается. Любые мысли, почему такое может случиться?

+0

Пара вопросов, которые нужно проверить: Вы уверены, что ни leaderboardViewController, ни [[UIApplication sharedApplication] delegate] .window.rootViewController не ноль? Как насчет лидеров? Вы также пытались переключиться между отладкой и выпуском, чтобы гарантировать, что ваш рейтинг лидеров не будет выпущен преждевременно? Вы видите какой-либо выход журнала в консоли? –

+0

Да, вы были правы, делегат [[UIApplication sharedApplication]] .window.rootViewController был нулевым. Какая глупая ошибка! Вот где вы получаете, когда вы копируете-вставляете слишком много :( – illyge

+0

Прохладный! Я бы очень признателен, если вы отметите мой последний ответ как правильный. –

ответ

0

Убедитесь, что ни одна из ваших переменных (например, «leaderboard») не равна нулю, так как Objective C любит терпеть неудачу в таких случаях.

0

Оказалось, что это просто глупая ошибка. [[UIApplication sharedApplication] delegate] .window.rootViewController был нулевым, потому что он никогда не был установлен в случае iOS 5.0.

Смежные вопросы