Domanda

Mentre vado attraverso la documentazione di Apple, non riesco a vedere un modo per aprire Game Center, dove la prima schermata è la dove l'utente può scegliere una classifica.

so di poter aprire una schermata specifica classifica, ma voglio aprire la schermata che ti permette all'utente di scegliere uno. è possibile?

Questo è il mio codice attualmente:

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];

Grazie !!

È stato utile?

Soluzione

Ecco un soluzione non documentata, ma che è stato approvato in più giochi ho lavorato:

    GKLeaderboardViewController *viewController = [[GKLeaderboardViewController alloc] init];
    viewController.leaderboardDelegate = self;

    [viewController popViewControllerAnimated:NO];
    [parent presentModalViewController:viewController animated:YES];
    [viewController release];

Spiegazione:

  • GKLeaderboardViewController è una sottoclasse di UINavigationController
  • controller della vista di una categoria particolare, è automaticamente in cima alla classifica di navigazione del controller di vista dello stack
  • Prima di display, è possibile modificare il già stack di spostamento
  • Per non animare, popping si verifica immediatamente, e prima che il controller della vista è ancora presentato.

Si può saltare l'impostazione della portata categoria e il tempo dal momento che non ne hanno bisogno (non sarà visualizzando controller di vista una "categoria di" particolare). Anche se non si imposta, leaderboard controller della vista sarà spingendo visualizzazione predefinita di controllo sulla parte superiore.

Ho inoltre rilasciato la variabile viewController (il controller della vista leaderboard), in quanto vista parent regolatore sarà presente la proprietà dell'oggetto. Non rilasciarlo crea quindi una perdita di memoria e può avere altre conseguenze indesiderate.


iOS 6 e versioni successive hanno la classe GKGameCenterViewController. Debole-link per GameKit e test per la presenza di questa classe con NSClassFromString(@"GKGameCenterViewController") != nil. Poi, lo usano come al solito.

un'istanza di questa classe al posto del GKLeaderboardViewController e impostare la proprietà viewState a GKGameCenterViewControllerStateLeaderboards avere classifiche mostrano immediatamente.

Altri suggerimenti

A partire da iOS 6.0 si dovrebbe fare in questo modo:

-(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];
}

Si è una risposta da parte di Apple che questa caratteristica non è disponibile al momento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top