Flo*_*ler 23 function callback ios swift
我正在尝试将函数传递给另一个函数,然后执行传递的函数传递给它一个变量.
这是我的代码:
func showStandardPrompt(prompt:String,view: UIViewController,numberInput: Bool, callback: (()->(String))?) {
let alert = UIAlertController(title: "Input Data", message: prompt, preferredStyle: .Alert)
alert.addTextFieldWithConfigurationHandler { (textField) in
if numberInput {
textField.keyboardType = .NumberPad
}
}
let OKAction = UIAlertAction(title: "OK", style: .Default) { (action) in
let field = alert.textFields![0] as UITextField
callback?(field.text!)
}
alert.addAction(OKAction)
let CancelAction = UIAlertAction(title: "Cancel", style: .Default, handler: nil)
alert.addAction(CancelAction)
view.presentViewController(alert,animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
callback?(field.text!)
Run Code Online (Sandbox Code Playgroud)
错误是"无法将'String'的值类型转换为期望的参数类型'()'.我知道这是语法问题 - 只是不知道应该是什么.
Dan*_*ieu 62
Rob的回答是正确的,虽然我想分享一个简单的回调/完成处理程序的例子,你可以下载一个示例项目并尝试getBoolValue
输入.
func getBoolValue(number : Int, completion: (result: Bool)->()) {
if number > 5 {
completion(result: true)
} else {
completion(result: false)
}
}
getBoolValue(8) { (result) -> () in
// do stuff with the result
print(result)
}
Run Code Online (Sandbox Code Playgroud)
重要的是要了解:
(String)->() // takes a String returns void
()->(String) // takes void returns a String
Run Code Online (Sandbox Code Playgroud)
尝试下面为Swift 3更新的代码
func getBoolValue(number : Int, completion: (Bool)->()) {
if number > 5 {
completion(true)
} else {
completion(false)
}
}
getBoolValue(number : 8, completion:{ result in
print(result)
})
Run Code Online (Sandbox Code Playgroud)
你已声明callback
不接受任何参数,然后你试图传递一个参数.
你指定了type (()->(String))?
,这是一个不带参数的可选函数,返回一个String
.
也许你的意思是指定((String)->())?
,这是一个可选的函数,它取一个String
并且什么都不返回.
我用这种方式:
ViewController1
destination.callback = { (id) -> Void in
print("callback")
print(id)
}
Run Code Online (Sandbox Code Playgroud)
ViewController2
var callback: ((_ id: Int) -> Void)?
callback?(example_id)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46612 次 |
最近记录: |