IPhone - игра в игровой центр выберите лидер -экрана - как его можно отобразить?

StackOverflow https://stackoverflow.com/questions/4534308

Вопрос

Когда я прохожу документацию 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, что эта функция в настоящее время недоступна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top