我有一个带有搜索栏的 UITableViewController。当用户点击返回按钮时搜索会起作用,但我无法在用户键入时更新 UITable。我已经实现了“searchBardidBeginEditing”功能,但它没有提供任何搜索结果。我将不胜感激任何帮助。
var findgroups: PFQuery = PFQuery(className: "Groups")
if self.searchBar.text != "" {
self.dataparse.removeAllObjects()
findgroups.whereKey("GroupName", containsString: self.searchBar.text)
findgroups.findObjectsInBackgroundWithBlock({ (obs: [AnyObject]?, err: NSError?) -> Void in
if err == nil && obs != nil {
if let obs = obs as? [PFObject] {
for objex in obs {
self.dataparse.addObject(objex)
}
}
}
self.tableView.reloadData()
})
} else {
findgroups.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
findgroups.orderByDescending("GroupName")
if error == nil && objects != nil {
if let objects = objects as? [PFObject] {
for object in objects {
self.dataparse.addObject(object)
}
}
}
self.tableView.reloadData()
}
}
}
func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
self.loaddata()
}
func searchBarTextDidEndEditing(searchBar: UISearchBar) {
searchBar.resignFirstResponder()
}
override func viewDidLoad() {
super.viewDidLoad()
loaddata()
searchBar.delegate = self
}
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
self.dataparse.removeAllObjects()
searchBar.resignFirstResponder()
loaddata()
}
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
searchBar.text = ""
searchBar.resignFirstResponder()
loaddata()
}
最佳答案
您的错误是您调用了“searchBardidBeginEditing”函数,但此函数仅在用户开始使用 UISearchBar 进行搜索时告诉委托(delegate)人。当用户点击栏时,也会调用 searchBarSearchButtonClicked 函数。因此,您只调用更新函数两次,而不是每次搜索文本更改时。
要修复此问题,请在“searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)”函数中使用数据更新函数,如下所示:
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
loaddata()
}
如果需要,您还可以使用 searchText 并将其提供给 loaddata(),因为 searchText 与 self.searchBar.text 相同
以下链接将带您进入 UISearchBarDelegate 协议(protocol)引用,您可以在其中了解协议(protocol)每个功能的含义: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UISearchBarDelegate_Protocol/index.html#//apple_ref/occ/intfm/UISearchBarDelegate/searchBar:textDidChange :
关于ios - 用户打字时搜索栏不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32168435/