![](/img/trans.png)
[英]Swift 4 - sharing location through 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.