2015-08-09 3 views
2

У меня возникают некоторые крайние трудности при вызове экрана достижений в игровом центре. Я уже установил достижения в iTunes connect, и он всплывает хорошо, если я сначала просматриваю экран достижений через таблицу лидеров. Однако; Я хотел бы иметь возможность нажать конкретную кнопку достижения и быть направлен непосредственно на экран достижений. Может ли кто-нибудь помочь? Я искал высоко и низко в Интернете (and read through all of the documentation). Я нашел много ресурсов для внедрения лидеров, но не так много ресурсов для реализации достижений в быстром. Мой код ниже. Любые предложения для моих последних двух функций?Вызов экрана достижений в Swift

override func viewDidLoad() { 
    super.viewDidLoad() 

    login() 

} 

func login() { 
    println("Game Center Login Called") 
    let localPlayer = GKLocalPlayer.localPlayer() 

    // Handle the authentication 
    localPlayer.authenticateHandler = {(Home: UIViewController!, error: NSError!) -> Void in 
     if Home != nil { 
      println("Authentication is being processed.") 
      self.presentViewController(Home, animated: true, completion: nil) 

     } else { 
      println("Player has been successfully authenticated.") 
     } 
    } 

} 

func showLeaderboard() { 


    let gkScore = GKScore(leaderboardIdentifier: "high_Score_Leader_Board") 
    gkScore.value = Int64(highscore) 
    GKScore.reportScores([gkScore], withCompletionHandler: ({ (error: NSError!) -> Void in 
     if (error != nil) { 
      // handle error 
      println("Error: " + error.localizedDescription); 
     } else { 
      println("Score reported: \(gkScore.value)") 
     } 
    })) 


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

    gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards 

    gcViewController.leaderboardIdentifier = "high_Score_Leader_Board" 
    self.showViewController(gcViewController, sender: self) 
    self.presentViewController(gcViewController, animated: true, completion: nil) 
} 





@IBAction func gameCenterButtoPressed(sender: AnyObject) { 
    showLeaderboard() 
} 



func gameCenterViewControllerDidFinish(gcViewController: GKGameCenterViewController!) 
{ 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

func showAchievements() { 
    // show Achievements screen 
} 


@IBAction func achievementButtonPressed(sender: AnyObject) { 

    // Call show achievements function when button pressed 
} 

ответ

2

Вместо:

gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards 

Я думаю, что вы хотите, это:

gcViewController.viewState = GKGameCenterViewControllerState.Achievements 

И я нашел эту информацию in this related tutorial.

+0

Это сработало! Я не могу вас поблагодарить. Так просто. Я потратил два дня на это. – Mir

 Смежные вопросы

  • Нет связанных вопросов^_^