我正在尝试将我的GameScene
的高分传递给我的GameOverViewController
。我已成功添加了segue GameOver
,该应用按预期工作。
GameOVerViewController
的要点是显示分数,广告和重播选项。
我看了很多教程,但是我似乎正在碰壁。这是我目前的设置。
GameScene.swift
包含游戏代码
ViewController
包含跟踪广告和横幅广告
GameOverViewController
很快会显示广告,重播并希望得分。
GameOver
链接两个视图的segue的名称
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)
}
答案 0 :(得分:4)
我猜你需要使用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)
}
希望这会有所帮助!