【发布时间】:2017-11-26 12:13:48
【问题描述】:
我已经阅读了一些关于为 UIAlertViews 声明处理程序的示例,但不知何故我无法掌握正确语法的概念。我看过一些示例,它们执行以下操作之一:
- 处理程序:someFunction
- handler: {action in SomeFunction}(“action in”是什么意思?)
- handler: { _ in print("Foo!") (同样,“in”是什么意思?)
我最担心的是我不知道这些东西是什么意思。我正在尝试使用第一种样式,但是出现以下错误:“变量在其自己的初始值内使用”
let answerVCAlert = UIAlertController(title: "Your turn", message: "What's the answer?", preferredStyle: .alert)
let submitAnswer = UIAlertAction(title: "Submit", style: .default, handler: submitAnswer(answer: " ")) //grab from textfield
let noAnswer = UIAlertAction(title: "No Answer", style: .default, handler: submitAnswer(answer: " "))
func submitAnswer(answer: String) {
print ("The string passed is \(answer)")
//compare answer to correct answer
}
func attemptAnswer() {
answerVCAlert.addAction(submitAnswer)
answerVCAlert.addAction(noAnswer)
//answerVCAlert.addTextField //how ??? too many different examples
self.present(answerVCAlert, animated: true, completion: nil)
}
【问题讨论】:
-
你在哪里调用 attempAnswer 方法?
-
“我不知道这些东西是什么意思” – 你会想阅读 Swift 参考中的 Closures 章节。
-
我读过闭包,知道什么是闭包的概念,也熟悉 Java 中的 lambda 表达式。通常让我失望的是语法的一部分(尤其是在使用“action”或“in”之类的词时,比如你在哪里定义了这个动作或者你的意思是什么(以及为什么?)?)。抱歉,如果在我的 OP 中不清楚,我知道这些概念是什么,但语法让我很着迷,因为每个人都只是给出了我不熟悉的具有这种语法的示例