我是斯威夫特的新手,如果这是个显而易见的问题,我很抱歉。
我正在尝试用Swift编写一个游戏,我在故事板中设计了一个标签和一个播放按钮。
我在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 one
GameViewController”实例,可能就是这样,您可以使用一个静态实例变量。
在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/