在 spritekit 中我无法弹出 Game Center 视图

In spritekit I cant pop GameCenter view

我正在用 sprite kit 制作游戏,在我使用 GameCenter 之前一切正常,这是我的代码

define the Gameviewcontroller:

var GameController:GameViewController = GameViewController()

当你触摸TouchecBegan里面的节点时:

    let touchLocation = (touches as NSSet).anyObject()?.locationInNode(self)

    let targetNode = self.nodeAtPoint(touchLocation!)

    if targetNode.name == "leader"{

        print("hhhh")

        GameController.showGamecenetr()

    }

GameViewControllerShowGameCenter 的代码:

func showGamecenetr() {

    print("jijijijji")

    GameKitHelper.sharedInstance.showGKGameCenterViewController(self)

}

它应该弹出 GameCenter 的视图,但它显示错误:

无法将类型 UIView 的值转换为 SubView

我发现这是一个很容易的错误,但我以前从来没有遇到过,我不知道如何处理,有人可以帮助我吗?

这是showGKGameCenterViewController()

里面的代码
func showGKGameCenterViewController(viewController:UIViewController!){

    if !gamecenterEnable {

        print("No user!")
        return 
        }

    let gameCenterViewController = GKGameCenterViewController()

    gameCenterViewController.gameCenterDelegate = self

    gameCenterViewController.viewState = .Leaderboards
    viewController.presentViewController(gameCenterViewController, animated: true, completion: nil)

    }

求助求助;(

所以我假设您已验证本地 player/user。 要打开 GameCenter 只需在您的场景中这样做

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    for touch in touches {
        let location = touch.locationInNode(self)
        let touchedNode = nodeAtPoint(location)

        if targetNode.name == "leader"{
            let gcViewController: GKGameCenterViewController = GKGameCenterViewController()
            gcViewController.gameCenterDelegate = self

            gcViewController.leaderboardIdentifier = kLeaderboardID

            gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards
            let vc: UIViewController = self.view!.window!.rootViewController!
            vc.presentViewController(gcViewController, animated: true, completion: nil)  
        }
    }
}

GKGameCenterControlleDelegate 在你的场景中

class GameScene: SKScene, GKGameCenterControllerDelegate {

func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController) {

    AppDelegate().resumeBackgroundMusic()
    gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)
}