我开发了一个小游戏,其中包括主菜单,游戏本身以及游戏标签。 我的问题是我在GameScene.swift文件中以编程方式添加了所有内容。
现在我可以使用以下代码行呈现UIActivityViewController:
class GameScene: SKScene, SKPhysicsContactDelegate {
var gameViewController: GameViewController!
在GameViewController.swift中,我将此代码放在viewDidLoad()函数中:
scene.gameViewController = self
然后我将以下函数添加到我的GameScene.swift文件中:
func share()
{
if gameViewController != nil {
let myText = "some text"
let activityVC:UIActivityViewController = UIActivityViewController(activityItems: [myText], applicationActivities: nil)
gameViewController.presentViewController(activityVC, animated: true, completion: nil)
}
}
此功能由一个按钮执行,我以编程方式添加,当我启动应用程序时一切正常。但是当我玩游戏并点击重播按钮并重新加载GameScene时,当我点击分享按钮时,我收到以下消息:
致命错误:在解包可选值时意外发现nil
请帮助我!
答案 0 :(得分:2)
好的,我已经在几个小时后找到了答案。
我没有使用我在GameScene.swift文件顶部声明的gameViewController变量。相反,我使用了以下几行代码:
func share()
{
let vc = self.view?.window?.rootViewController
let myText = "test"
let activityVC:UIActivityViewController = UIActivityViewController(activityItems: [myText], applicationActivities: nil)
vc?.presentViewController(activityVC, animated: true, completion: nil)
}
我的问题的答案非常简单,我希望我可以帮助解决问题。