繁体   English   中英

分享 Swift UIActivityViewController

[英]Sharing Swift UIActivityViewController

我是用 Swift 编写的新手,我正在尝试编写一个小游戏。 我已经通过搜索和调试完成了大部分工作,但我无法让 UIActivityViewController 工作。

我做了以下工作:

在 GameViewController.swift 中

 func screenshot() -> UIImage { UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 1.0) view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image! }

 func shareString(string: String, url: NSURL, image: UIImage) { let vc = UIActivityViewController(activityItems: [string, url, image], applicationActivities: nil) present(vc, animated: true, completion: nil) }

然后在 GameScene.swift 中我设置了:

 protocol GameSceneDelegate { func screenshot() -> UIImage func shareString(string: String, url: NSURL, image: UIImage) }

然后设置一个变量 var gameSceneDelegate = GameSceneDelegate.self

然后尝试调用函数

 func share() { let urlString = "http://www.google.com" let url = NSURL(string: urlString) let screenshot = gameSceneDelegate.screenshot let initialTextString = "OMG! I scored \\(score) points" gameSceneDelegate.shareString(initialTextString, url: url!, image: screenshot) }

但是当我尝试调用最后一个函数行时: gameSceneDelegate.shareString(initialTextString, url: url!, image: screenshot)

我收到此错误:“通话中的额外参数”

我哪里出错了,当函数定义中显然有三个参数时,我似乎无法理解为什么 shareString 不能采用 3 个参数。

在您的函数声明中,您没有可选项,但是在调用该函数时,您正在强制解包 url-尽量不要将其设为可选项

编辑:

当编译器无法找出问题所在时,我遇到了此错误 - 它可能是上面另一行中错误分配的类型(例如数组类型中的字典,或使用不再存在的常量)。 我建议重新排序您的函数,看看是否在不同的行上发生了相同的错误。

let screenshot = gameSceneDelegate.screenShot 

创建一个()->UIImage类型的变量,即一个函数。 您需要像这样评估委托函数:

let screenshot = gameSceneDelegate.screenShot()

这将按照您的意图创建一个UIImage类型的变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM