IPhone - игра в игровой центр выберите лидер -экрана - как его можно отобразить?
-
13-10-2019 - |
Вопрос
Когда я прохожу документацию Apple, я не вижу способа открыть игровой центр, где первый экран - это то, где пользователь может выбрать таблицу лидеров.
Я знаю, что могу открыть конкретный экран таблицы лидеров, но я хочу открыть экран, который позволил пользователю выбрать один. это возможно ?
Это мой код в настоящее время:
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];
Спасибо!!
Решение
Вот обходной путь без документов, но был одобрен в нескольких играх, над которыми я работал:
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
учебный класс. Слабая связы NSClassFromString(@"GKGameCenterViewController") != nil
. Анкет Затем используйте его как обычно.
Создавать этот класс вместо GKLeaderboardViewController
и установить его viewState
собственность GKGameCenterViewControllerStateLeaderboards
Чтобы таблицы лидеров показали немедленно.
Другие советы
Начиная с 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];
}
Получил ответ от Apple, что эта функция в настоящее время недоступна.