共享Swift UIActivityViewController

时间:2019-03-02 22:21:54

标签: ios swift xcode

我对使用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 !,图片:屏幕截图)

我收到此错误:“通话中有其他参数”

我要去哪里了,我似乎无法理解为什么在函数定义中显然有3个参数的情况下,shareString无法采用3个参数。

2 个答案:

答案 0 :(得分:0)

在函数声明中没有可选的内容,但是在调用函数时,您是在强制展开网址-尝试不要将其设为可选的

编辑:

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

答案 1 :(得分:0)

let screenshot = gameSceneDelegate.screenShot 

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

let screenshot = gameSceneDelegate.screenShot()

这将根据需要创建类型为UIImage的变量