如何将函数传递给swift 2.0中的闭包参数

时间:2015-10-01 20:07:28

标签: swift2 ios9 uialertaction

我是IOS应用程序开发以及swift的初学者。我现在正在尝试我们UIAlertController.UIAlertAction要求我提供三个参数。第三个是关闭。如果我想将预定义函数传递给我,我该怎么办?这个参数?这是我的代码。我在这些代码之前编写了func ask()。这个函数也没有错误。但是下面的代码在声明UIAlertAction时显示名为“表达式的类型没有更多上下文”的错误。我是使游戏结束https://www.hackingwithswift.com/read/2/5/from-outlets-to-actions-ibaction-and-string-interpolation

let a:UIAlertController = UIAlertController(title: title, message: "Your score is \(scores)", preferredStyle: .Alert)
        let b:UIAlertAction=UIAlertAction(title: "ok", style: .Default, handler:ask)
        a.addAction(b)
        presentViewController(a, animated: true, completion: nil)

2 个答案:

答案 0 :(得分:0)

语法正确。但是,错误表明类型不正确。您的ask函数很可能没有与title:style:handler init方法的第三个参数匹配的方法签名。它需要接受UIAction类型的参数并返回Void

答案 1 :(得分:0)

正如Charles建议的那样,您最好提供ask函数,但很可能需要修改其参数:

func ask(action: UIAlertAction!) {
...
}

然后在nil func之前调用ask函数时提供viewDidLoad参数。

ask(nil)

教程作者在“代码完成之前”

开头的段落中详细解释了这一点