What is the right way to present Game Center leaderboards in iOS 7? The code below crashes on showViewController
because it only supports iOS 8. Other Stack Overflow posts suggest using presentViewController
for iOS 7, but that only shows a blank leaderboard.
func showLeaderboards() {
// User logged into GameCenter?
if (!GKLocalPlayer.localPlayer().authenticated) {
println("Local player not authenticated")
// Show message
return
}
// If here, user authenticated. Present leaderboards.
var gcViewController = GKGameCenterViewController()
gcViewController.gameCenterDelegate = self
gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards
gcViewController.leaderboardIdentifier = HighScoresLeaderboardKey
self.showViewController(gcViewController, sender: self)
self.navigationController?.pushViewController(gcViewController, animated: true)
}
If your app targets iOS 7.x, you should use the following code:
self.presentViewController(gcViewController, animated: true, completion: nil)
instead of:
self.showViewController(gcViewController, sender: self)