我是斯威夫特的新手,如果这是个显而易见的问题,我很抱歉。
我正在尝试用Swift编写一个游戏,我在故事板中设计了一个标签和一个播放按钮。
ios - 在GameScene.swift中从GameViewController.swift更改对象的属性-LMLPHP
我在GameViewController.swift文件中添加了对这些对象的引用,如下所示:

// MARK: Objects
@IBOutlet var gameLabel: UILabel!
@IBOutlet var playButton: UIImageView!

// MARK: Actions

@IBAction func playButtonTapped(sender: UITapGestureRecognizer) {
        GameScene().gameStart()
}

这属于GameViewController类:class GameViewController: UIViewController
然而,主游戏本身发生在gamescope.swift中。这涉及到我必须隐藏的标签和图像,一旦游戏开始。我不确定如何设置这些对象隐藏的属性,因为如果我在gamescope.swift中执行了以下操作:
GameViewController().playButton.hidden = true

…游戏因致命错误而崩溃。错误说明:致命错误:在展开可选值时意外找到nil。
有人对这个问题有什么建议吗?任何帮助都非常感谢。很抱歉,如果信息难以理解。
干杯。

最佳答案

您正在创建一个新的“GameViewController(), but you want you want use your already existent one. If you only want to create oneGameViewController”实例,可能就是这样,您可以使用一个静态实例变量。
GameViewController中,输入:

static var instance: GameViewController!

在它的viewDidLoad()中,输入:
GameViewController.instance = self

最后,在GameScene中,使用GameViewController()切换GameViewController.instance

关于ios - 在GameScene.swift中从GameViewController.swift更改对象的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36358609/

10-13 03:59