GameScene共享按钮

GameScene Share Button(GameScene共享按钮)

本文介绍了GameScene共享按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的游戏差不多可以开始了,我唯一缺少的(并且想补充的)就是在社交媒体上分享标准消息的选项。我环顾四周,发现了不同的方法,但当我实现它们时,似乎没有一种方法奏效。我有一种感觉,可能是我做错了什么简单的事情!

这是我的按钮:

func createShareButton() {
    shareButton = SKSpriteNode(imageNamed: "shareBtn")
    shareButton.size = CGSize(width: 240, height: 55)
    shareButton.position = CGPoint(x: self.frame.width / 2, y: (self.frame.height / 2) - 150)
    shareButton.zPosition = 6
    self.addChild(shareButton)
    shareButton.run(SKAction.scale(to: 1.0, duration: 0.3))
}

当按钮被按下时,我的代码如下(在我的GameScene.wift文件中):

let vc = self.view?.window?.rootViewController
                let myText = "share test message!"
                let activityVC:UIActivityViewController = UIActivityViewController(activityItems: [myText], applicationActivities: nil)
                vc?.present(activityVC, animated: true, completion: nil)

当我点击该按钮时,在控制台中出现错误:

Warning: Attempt to present <UIActivityViewController: 0x149d4e880> on <MyGame.initialVC: 0x149d0fe90> whose view is not in the window hierarchy!

知道我哪里出错了吗?

提前谢谢!

推荐答案

两天前我遇到了同样的问题。我用这个stackoverflow answer

修复了它

我一直收到相同的错误,这是因为rootViewController不是层次结构中当前最顶层的视图控制器。当我想让视图控制器控制当前的SKScene时,它正在尝试使用我的初始视图控制器。

希望这能有所帮助

    func shareGame() {
        if var top = scene?.view?.window?.rootViewController {
            while let presentedViewController = top.presentedViewController {
                top = presentedViewController
            }
            let activityVC = UIActivityViewController(activityItems: ["I am playing Crashbox! Check it out."], applicationActivities: nil)
            activityVC.popoverPresentationController?.sourceView = view 
            top.present(activityVC, animated: true, completion: nil)
        }
    }

这篇关于GameScene共享按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:GameScene共享按钮

基础教程推荐