我想要创建的是一个iOS中的自动完成文本框。
我有一个选择客户的表单,在该表单中,用户必须使用文本字段选择客户。我的要求是,当用户在文本字段上输入前三个字母时,某些服务应运行远程网络服务查询并将查询结果作为自动完成建议提供给用户。
以下是我目前的应用程序代码(仅限iPad)。
我有一个选择客户的表单,在该表单中,用户必须使用文本字段选择客户。我的要求是,当用户在文本字段上输入前三个字母时,某些服务应运行远程网络服务查询并将查询结果作为自动完成建议提供给用户。
以下是我目前的应用程序代码(仅限iPad)。
import UIKit
class AddClientViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var clientTextField: UITextField!
var foundList = [String]()
override func viewDidLoad() {
super.viewDidLoad()
let listUrlString = "http://bla.com/myTextField.php?field=\(clientTextField)"
let myUrl = NSURL(string: listUrlString);
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "GET";
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print(error!.localizedDescription)
dispatch_sync(dispatch_get_main_queue(),{
AWLoader.hide()
})
return
}
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSArray
if let parseJSON = json {
self.foundList = parseJSON as! [String]
}
} catch {
print(error)
}
}
task.resume()
}
这是我的Web服务提供的JSON输出。
["123,John", "343,Smith", "345,April"]
第一个参数是“客户端ID”,第二个参数是客户的姓名,用逗号分隔。 "John" 是客户的名字,因此应在自动完成建议中显示,如果选择它,将把 "clientTextField" 的文本设置为 "John"。
"clientTextField" 的当前文本内容作为 GET 参数传递给我的 Web 服务。
我不知道如何做到这一点。用户可能正在输入但尚未完成,而多个查询可能已经被发送。