GameOverViewController

GameOverViewController

我正在尝试将GameScene的高分传递给GameOverViewController。我已经成功添加了segue GameOver,并且该应用程序按预期工作。
GameOVerViewController的要点是显示乐谱,广告和重播选项。

我看了一些教程,但是似乎遇到了麻烦。这是我当前的设置。
GameScene.swift包含游戏代码
ViewController包含跟踪广告和横幅广告
GameOverViewController可以显示广告,重播,并希望很快就会有乐谱。

链接两个视图的segue的GameOver名称
scoreLabelNode.text = "Score \(score)"显示GameScene的得分

我在GameOVerViewController上添加了一个标签,希望以此来显示得分...

@IBOutlet weak var Label: UILabel!

var recevedString: String = ""

    override func viewDidLoad() {
    super.viewDidLoad()

        Label.text = recevedString

在我的GameScene上,我尝试了以下功能
func segue(){

    self.viewController.performSegueWithIdentifier("GameOver", sender: viewController)
    var secondViewController: GameOverViewController = segue.destinationViewController as GameOverViewController

    secondViewController.recevedString = scoreLabelNode.text
}

不,这正确指出了() -> () does not have a member named destinationViewController'的以下错误

有人会知道正确的代码来帮助发送高分数据,或者在我出问题的时候将我指向正确的方向。

谢谢。

更新的代码

进行更改后,有人会知道为什么乐谱仍然无法显示到GameOVerViewController吗?我猜测didBeginContact to call the prepareForSegue`中缺少某些内容。谢谢。
func didBeginContact(contact: SKPhysicsContact) {

    if( moving.speed > 0 ) {

        if((contact.bodyA.categoryBitMask & scoreCategory) == scoreCategory || (contact.bodyB.categoryBitMask & scoreCategory) == scoreCategory){

            score++
            scoreLabelNode.text = "Score \(score)"
        }else {

            moving.speed = 0;

//lots of game over code removed from here

            return segue()
        }

    }

}

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "GameOver")
    {
        let destVC = (segue.destinationViewController as? GameOverViewController)!
        destVC.recevedString = scoreLabelNode.text
    }
}

func segue(){
    self.viewController.performSegueWithIdentifier("GameOver", sender: self)
}

最佳答案

我猜你需要使用prepareForSegue
尝试这个 :

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if(segue.identifier == "GameOver")
        {
            let destVC = (segue.destinationViewController as? GameOverViewController)!
            destVC.recevedString = scoreLabelNode.text
        }
 }

现在你的segue()看起来像
func segue(){
    self.viewController.performSegueWithIdentifier("GameOver", sender: self)
}

希望这会有所帮助!

关于ios - Swift-将游戏得分传递给第二 View Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31893854/

10-08 20:58