在GameScene.swift中显示UIActivityViewController

时间:2015-07-14 10:03:04

标签: ios swift menu sprite-kit

我开发了一个小游戏,其中包括主菜单,游戏本身以及游戏标签。 我的问题是我在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

请帮助我!

1 个答案:

答案 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)

}

我的问题的答案非常简单,我希望我可以帮助解决问题。