我已经尝试了所有在Stack Overflow和在线其他地方看到的所有内容,但是我不知道如何从我的SKScene类中呈现一个viewController。我有3个场景,其中一个场景有名为“ buttonFacebook”和“ buttonTwitter”的Facebook / Twitter节点。我正在使用Switch语句检查touchesBegan中的节点名称。

我能找到的最好的帖子是,我认为最接近完成此操作的地方是:swift spritekit Facebook share button

在我的SKScene类“ GameSceneGamePlay”内部,如果我的Switch能够识别何时触摸Facebook按钮,我便拥有此Case:

case "facebook":
        func showTweetSheet() {
            let tweetSheet = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
            tweetSheet.completionHandler = {
                result in
                switch result {
                case SLComposeViewControllerResult.Cancelled:
                    //Add code to deal with it being cancelled
                    break

                case SLComposeViewControllerResult.Done:
                    //Add code here to deal with it being completed
                    //Remember that dimissing the view is done for you, and sending the tweet to social media is automatic too. You could use this to give in game rewards?
                    break
                }
            }

            tweetSheet.setInitialText("Test Twitter") //The default text in the tweet
            tweetSheet.addImage(UIImage(named: "TestImage.png")) //Add an image if you like?
            tweetSheet.addURL(NSURL(string: "http://twitter.com")) //A url which takes you into safari if tapped on

            self.presentViewController(tweetSheet, animated: false, completion: {
                //Optional completion statement
            })
        }


当我尝试执行self.presentViewController(tweetSheet,animation:false,....“ GameSceneGamePlay没有名为presentViewController的成员时,我得到一个错误。

我试图从上面引用的帖子中使用这2条语句来触发该函数,但是我无法克服presentViewController的错误。

NSNotificationCenter.defaultCenter().postNotificationName("facebookPost", object: nil)

NSNotificationCenter.defaultCenter().addObserver(self, selector: "showTweetSheet", name: "facebookPost", object: nil)


有人可以给我一些建议如何克服这个错误,或者是否/如何需要创建一个新的viewController?我尝试用UIViewController创建一个类,但也无法显示它。

最佳答案

您的问题是您试图从GameSceneGamePlay中呈现一个UIViewController,但是在您编写自己的时候,GameSceneGamePlay是SKScene的实例,而不是UIViewController。

presentViewController是在UIViewController而非SKScene上找到的方法,这就是为什么会出现错误的原因。

要解决此问题,您可以保留对呈现您的SKScene的UIViewController的引用(如this post中所述),然后要求该视图控制器呈现您的tweetSheet。

关于ios - 如何在我的Sprite Kit游戏应用中实现Facebook和Twitter发布?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27985492/

10-10 22:24