Swift: no puede mostrar Game Center para mostrar

Estoy usando este código para que Game Center aparezca cuando el usuario presiona un button. Quiero que esto muestre sus puntajes más altos en la sorting:

@IBAction func showScores(x : UIButton) { var gameCenterController : GKGameCenterViewController! if (gameCenterController != nil) { gameCenterController.gameCenterDelegate = self self.presentViewController(gameCenterController, animated: true, completion: nil) } } 

Pero recibo un error en esta línea:

 gameCenterController.gameCenterDelegate = self 

Eso dice,

  Type 'MenuViewController' does not conform to protocol `GKGameCenterControllerDelegate` 

¿Qué estoy haciendo mal?

¿Cómo puedo implementar GameCenter en mi juego para que los puntajes altos de los usuarios se agreguen a las tablas de sorting donde se pueden ver presionando un button?

Asegúrese de declarar que su controller de vista de presentación cumple GKGameCenterControllerDelegate así:

 class MenuViewController: GKGameCenterControllerDelegate 

Luego, en Swift, agregue la siguiente function a su MenuViewController:

 func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController!) { //code to dismiss your gameCenterViewController // for example: gameCenterViewController.dismissViewControllerAnimated(true, completion: nil) } 

Por último, asegúrese de que el juego CenterDelegate se establece en el controller de vista del centro de juego antes de presentarlo. Por ejemplo:

 var gcViewController: GKGameCenterViewController = GKGameCenterViewController() gcViewController.gameCenterDelegate = self 

Tenga en count que el delegado es gameCenterDelegate y no solo delegate .

Además, aquí hay un ejemplo de cómo mostrar su sorting desde MenuViewController. (Este código estaría en MenuViewController):

 func showLeaderboard() { var gcViewController: GKGameCenterViewController = GKGameCenterViewController() gcViewController.gameCenterDelegate = self gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards gcViewController.leaderboardIdentifier = "yourleaderboardid" self.presentViewController(gcViewController, animated: true, completion: nil) } 

Dice que no implementó el método de delegado.

 // Called when the player is done interacting with the view controller's content. (requinetworking) - (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController 

entonces tu class puede implementar así:

 class YourViewController : GKGameCenterControllerDelegate { func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController!) { // do somthing } }