【发布时间】:2016-06-08 08:16:01
【问题描述】:
我希望能够在 iOS 中创建一个自动完成的文本字段。
我有一个用于选择客户端的表单,其中用户必须使用文本字段选择一次客户端。我想要发生的是当用户在文本字段上写前三个字母时,我希望某些服务使用输入的文本运行远程 Web 服务查询并将查询结果显示为自动完成建议。
以下是我当前的应用程序代码(仅限 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"]
以逗号分隔,第一个参数为client ID,第二个参数为客户端名称。 John 是名称,因此它应该出现在自动完成建议中,如果选中,则会将 clientTextField 的文本设置为 John。
clientTextField 的当前文本内容作为 GET 参数传递给我的网络服务。
我不知道该怎么做。用户可能正在输入但尚未完成,而可能已经发送了多个查询。
【问题讨论】:
标签: ios json swift autocomplete