title: How to display Game Center leaderboard with SwiftUI
body: <p>I created a tester app to test adding a GameCenter leaderboard to a simple SwiftUI game I am creating. I have been unable to figure out how to display the Game Center leaderboard with all the scores. </p>
  
  <p>I have created a class containing all the Game Center functions (authentication and adding score to the leaderboard. This is called from the main ContentView view. I can't figure out how to make it show the leaderboard (or even the gamecenter login screen if the player isn't already logged in.)</p>
  
  <p>This is my GameCenterManager class:</p>
  
  <pre><code>class GameCenterManager {
          var gcEnabled = Bool() // Check if the user has Game Center enabled
          var gcDefaultLeaderBoard = String() // Check the default leaderboardID
          var score = 0
          let LEADERBOARD_ID = "grp.colorMatcherLeaderBoard_1" //Leaderboard ID from Itunes Connect
  
         // MARK: - AUTHENTICATE LOCAL PLAYER
         func authenticateLocalPlayer() {
          let localPlayer: GKLocalPlayer = GKLocalPlayer.local
  
             localPlayer.authenticateHandler = {(ViewController, error) -&gt; Void in
                 if((ViewController) != nil) {
                     print("User is not logged into game center")
                 } else if (localPlayer.isAuthenticated) {
                     // 2. Player is already authenticated &amp; logged in, load game center
                     self.gcEnabled = true
  
                     // Get the default leaderboard ID
                     localPlayer.loadDefaultLeaderboardIdentifier(completionHandler: { (leaderboardIdentifer, error) in
                      if error != nil { print(error ?? "error1")
                         } else { self.gcDefaultLeaderBoard = leaderboardIdentifer! }
                     })
                      print("Adding GameCenter user was a success")
                 } else {
                     // 3. Game center is not enabled on the users device
                     self.gcEnabled = false
                     print("Local player could not be authenticated!")
                  print(error ?? "error2")
                 }
             }
         } //authenticateLocalPlayer()
  
          func submitScoreToGC(_ score: Int){
              let bestScoreInt = GKScore(leaderboardIdentifier: LEADERBOARD_ID)
              bestScoreInt.value = Int64(score)
              GKScore.report([bestScoreInt]) { (error) in
                  if error != nil {
                      print(error!.localizedDescription)
                  } else {
                      print("Best Score submitted to your Leaderboard!")
                  }
              }
          }//submitScoreToGc()
      }
  </code></pre>
  
  <p>and here is the ContentView struct: </p>
  
  <pre><code>    struct ContentView: View {
  
          //GameCenter
          init() {
              self.gameCenter = GameCenterManager()
              self.gameCenter.authenticateLocalPlayer()
          }
  
          @State var score = 0
          var gcEnabled = Bool() //Checks if the user had enabled GameCenter
          var gcDefaultLeaderboard = String() //Checks the default leaderboard ID
          let gameCenter: GameCenterManager
  
          /*End GameCenter Variables */
  
  
  
          var body: some View {
  
              HStack {
                  Text("Hello, world!")
                  Button(action: {
                      self.score += 1
                      print("Score increased by 10. It is now \(self.score)")
                      self.gameCenter.submitScoreToGC(self.score)
  
                  }) {
                      Text("Increase Score")
  
                  }
              }
          }
      }
  </code></pre>
  
  <p>Would greatly appreciate any help in fixing the problem. </p>