【发布时间】:2015-08-08 13:58:13
【问题描述】:
我正在尝试将我的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 theprepareForSegue 缺少一些东西。谢谢。
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)
}
【问题讨论】:
标签: ios swift uiviewcontroller segue