【问题标题】:Showing leaderboard crashes app because showViewController isn't supported显示排行榜崩溃应用程序,因为不支持 showViewController
【发布时间】:2015-06-03 02:33:23
【问题描述】:

在 iOS 7 中显示 Game Center 排行榜的正确方法是什么?下面的代码在 showViewController 上崩溃,因为它只支持 iOS 8。其他 Stack Overflow 帖子建议在 iOS 7 上使用 presentViewController,但这只会显示空白排行榜。

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)
}

【问题讨论】:

    标签: ios swift ios7 ios8 game-center-leaderboard


    【解决方案1】:

    如果您的应用面向 iOS 7.x,则应使用以下代码:

    self.presentViewController(gcViewController, animated: true, completion: nil)
    

    代替:

    self.showViewController(gcViewController, sender: self)
    

    【讨论】:

    • 感谢您的帮助,但 presentViewController 显示一个空的排行榜(即没有排行榜选项卡,没有挑战选项卡)。如果我们在 iOS 8 设备上使用 showViewController,它会显示一个填充的排行榜。我们还需要对 presentViewController 做些什么以便它显示一些东西吗?
    • 我是GameKit的初学者,很抱歉我不能帮你解决“显示一个空的排行榜”
    • 谢谢,但是您知道为什么我们在 iOS 8 设备上使用 presentViewController 而不是 showViewController 时结果会不同吗?
    • 实际上现在似乎可以工作了,谢谢!不知道为什么一开始它不起作用。
    猜你喜欢
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多