我建造的应用程序需要使用搜索栏来梳理数组并为您输入的内容提供建议。当出现数组中的建议时,您需要能够选择它并将其返回到UITextField
。
我已经做了很多关于如何做到这一点的研究,但到目前为止没有运气,我在目标C中发现了一些东西,但仍然没有真正帮助我。
我知道互联网上有一点UISearchController
,但UISearchController
没有给我我需要的东西,我需要初始搜索字段到如果您可以替换初始搜索字段,那么它应该位于UITableViewCell
,而不是页面顶部,但是我已经完成了不可能的研究。
如果有可能,请告诉我如何,因为最终这就是我想要的。
因此,我的代码到目前为止有一个UITableview
,其中有两个部分,第一部分有textfield
。我想使用第二部分在您输入时显示建议。我在插入新行并根据我的阵列显示建议时遇到问题,我不仅会感谢任何帮助,而且还有很多我的课程伙伴,因为他们在最后的毕业设计中遇到了类似的问题。
这是我的代码
import UIKit
class ViewController: UITableViewController {
var stations: [String]
var sectionTitle: [String]
@IBOutlet weak var searchField: UITextField!
required init(coder aDecoder: NSCoder) {
stations = [String]()
stations.append("Bournemouth")
stations.append("London")
stations.append("Poole")
sectionTitle = [String]()
sectionTitle.append("Search")
sectionTitle.append("Results")
super.init(coder: aDecoder)
}
override func viewDidLoad() {
tableView.rowHeight = 80;
searchField.delegate = self
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension ViewController: UITableViewDataSource {
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return sectionTitle.count
}
}
extension ViewController: UITableViewDelegate {
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return sectionTitle[section]
}
}
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
println("search")
// loop though stations array
// let path = NSIndexPath(forRow: 1, inSection: 1)
// let paths = [path]
// tableView.insertRowsAtIndexPaths(paths, withRowAnimation: .Automatic)
let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 1))
cell?.textLabel?.text = searchField.text
searchField.resignFirstResponder()
return true
}
}
我相当肯定我需要关注的代码是以下内容,现在如果我可以在第二部分为数组项的每个部分插入行,我会很高兴,即循环遍历数组并为每个项目插入一个新行。
extension ViewController: UITableViewDelegate {
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return sectionTitle[section]
}
}
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
println("search")
// loop though stations array
// let path = NSIndexPath(forRow: 1, inSection: 1)
// let paths = [path]
// tableView.insertRowsAtIndexPaths(paths, withRowAnimation: .Automatic)
let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 1))
cell?.textLabel?.text = searchField.text
searchField.resignFirstResponder()
return true
}
}