我是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)
答案 0 :(得分:0)
语法正确。但是,错误表明类型不正确。您的ask
函数很可能没有与title:style:handler
init
方法的第三个参数匹配的方法签名。它需要接受UIAction
类型的参数并返回Void
。
答案 1 :(得分:0)
正如Charles建议的那样,您最好提供ask
函数,但很可能需要修改其参数:
func ask(action: UIAlertAction!) {
...
}
然后在nil
func之前调用ask
函数时提供viewDidLoad
参数。
ask(nil)
教程作者在“代码完成之前”
开头的段落中详细解释了这一点