0

我是 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)
4

2 回答 2

0

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

于 2015-10-01T20:30:10.940 回答
0

正如查尔斯建议的那样,你最好提供你的ask函数,但很可能需要修改它的参数:

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

然后当您在func中调用该函数时还提供一个nil参数。askviewDidLoad

ask(nil)

教程作者在“代码完成之前”开始的段落中更详细地解释了这一点

于 2015-10-03T18:04:33.870 回答