我已经尝试了所有在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/