swift - 在 Swift 中调用成就屏幕

标签 swift game-center leaderboard achievements

我在调用游戏中心的成就屏幕时遇到了一些极端的困难。我已经在 iTunes connect 中设置了成就,如果我先通过排行榜访问成就屏幕,它会正常弹出。然而;我希望能够按下特定的成就按钮并直接进入成就屏幕。有人可以帮忙吗?我在互联网上搜索了很多(and read through all of the documentation)。我找到了很多用于实现排行榜的资源,但用于快速实现成就的资源并不多。我的代码如下。对我的最后两个功能有什么建议吗?

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
}

最佳答案

而不是:

gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards

我想你想要的是:

gcViewController.viewState = GKGameCenterViewControllerState.Achievements

我找到了这个信息in this related tutorial .

关于swift - 在 Swift 中调用成就屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31908305/

相关文章:

ios - Xcode 日志中找不到字体 SKLabelNode 警告

swift - 将 View 添加为 subview 时,ContentInset 未更新

swift - 替换已弃用的函数 glLineWidth()

ios - 保存游戏中心数据(GKTurnBasedMatch)的良好做法?

ios - GC Matchmaking邀请人能收到 "declined"消息吗?

python - .get() python json 文件不和谐机器人

ios - 为什么 sizeThatFits 不能与 UILabel 一起使用?

iphone - Game Center 自定义排行榜 - 我真的需要调用 2 次电话才能获取玩家的别名吗?

objective-c - 游戏中心排行榜中的完成按钮不起作用

iphone - 如何检测Game Center支持?