gpt4 book ai didi

swift - 自动完成搜索栏 - 不是值单元格

转载 作者:行者123 更新时间:2023-11-30 13:35:22 25 4
gpt4 key购买 nike

我正在尝试实现一个具有自动完成功能的搜索栏。我希望当我开始输入后没有值时,会出现一个单元格“无结果”。但是当我第一次选择 searchField 或删除其中的所有字符时,单元格就会消失。我设法让它在 searchField 为“”时出现,但我找不到一种方法让它像我描述的那样工作。

我的代码:

@IBOutlet weak var searchField: UISearchBar!
@IBOutlet var autocompleteTableView: UITableView!

var pastUrls = ["Men", "Women", "Cats", "Dogs", "Children"]
var autocompleteUrls = [String]()
var searchActive : Bool = false

override func viewDidLoad() {
super.viewDidLoad()
searchField.delegate = self
autocompleteTableView.backgroundColor = UIColor.clearColor()
autocompleteTableView!.delegate = self
autocompleteTableView!.dataSource = self
autocompleteTableView!.scrollEnabled = true
autocompleteTableView!.hidden = true
}


func searchBar(searchBar: UISearchBar, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
autocompleteTableView.hidden = false
let substring = (searchBar.text! as NSString).stringByReplacingCharactersInRange(range, withString: text)
searchAutocompleteEntriesWithSubstring(substring)
return true
}

func searchAutocompleteEntriesWithSubstring(substring: String) {
autocompleteUrls.removeAll(keepCapacity: false)
for curString in pastUrls {
if curString.lowercaseString.rangeOfString(substring) != nil {
autocompleteUrls.append(curString)
}
}
autocompleteTableView!.reloadData()
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return autocompleteUrls.count

}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell")

if let _ = cell {
let index = indexPath.row as Int
cell!.textLabel!.text = autocompleteUrls[index]
} else {
cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "cell")
}
return cell!

}

最佳答案

您需要检查您的 numberOfRowsInSection 方法,您的数组是否为空以及是否返回 1。

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if autocompleteUrls.count != 0 {
return autocompleteUrls.count
}

return 1

}

此外,您可以使用 GitHub 中的 DZNEmptyDataSet这是一组很好的委托(delegate)方法,如果没有要显示的数据,它将在您的 tableView 中显示一些内容。

关于swift - 自动完成搜索栏 - 不是值单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36134303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com