【发布时间】:2015-04-27 11:37:44
【问题描述】:
当用户按下我的 SecondViewController 上的按钮(带有得分/最高得分的游戏结束屏幕)时,我无法显示 Game Center 排行榜。 UIbutton 是 ShowLeaderboard,您将在下面看到。
我得到的错误是:
Warning: Attempt to present <GKGameCenterViewController: 0x7fb1c88044a0> on <UIViewController: 0x7fb1c2624e90> whose view is not in the window hierarchy!
我尝试过先关闭视图,但无论我做什么,我都不能只显示排行榜视图。下面是我的 SecondViewController 代码:
import UIKit
import GameKit
class SecondViewController: UIViewController, GKGameCenterControllerDelegate {
@IBOutlet var scoreLabel: UILabel!
@IBOutlet var HighScoreLabel: UILabel!
var receivedString: String = ""
var receivedHighScore: String = ""
override func viewDidLoad() {
super.viewDidLoad()
scoreLabel.text = receivedString
HighScoreLabel.text = receivedHighScore
}
@IBAction func ShowLeaderboard(sender: UIButton) {
dismissViewControllerAnimated(true, completion:nil)
showLeader()
}
func showLeader() {
var vc = self.view?.window?.rootViewController
var gc = GKGameCenterViewController()
gc.gameCenterDelegate = self
vc?.presentViewController(gc, animated: true, completion: nil)
}
func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController!)
{
gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)
}
override func prefersStatusBarHidden() -> Bool {
return true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func retryButton(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
}
编辑 搞定了!我所要做的就是改变
var vc = self.view?.window?.rootViewController
到
var vc = self
【问题讨论】:
标签: ios objective-c swift uiviewcontroller