[英]Swift: Tableview and Search Bar send null object on first time with segue
[英]TableView doesnot populate data for the first time while tapping on Search bar
我试图通过UISearchController
实现搜索栏,并实现为
func updateSearchResultsForSearchController(searchController: UISearchController) {
filteredTableData.removeAll(keepCapacity: true)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text)
let array = (tabledata as NSArray).filteredArrayUsingPredicate(searchPredicate)
filteredTableData = array as! [String]
self.tblView.reloadData()
}
但是,当我们点击搜索栏时,表tableview
不会填充数据。 否则,一切正常。
我也尝试检查搜索栏的文本是否大于1,但它在初始时有效,但在退格上却给我错误。 什么是hack?
您应该实现UISearchbarDelegate的 this方法
所以你的线会是
func searchBar(searchBar: UISearchBar, textDidChange searchText: String)
{
filteredTableData.removeAll(keepCapacity: true)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchBar.text)
let array = (tabledata as NSArray).filteredArrayUsingPredicate(searchPredicate)
filteredTableData = array as! [String]
self.tblView.reloadData()
}
您需要在此之前将searchBar.delegate设置为self
我的问题的解决方案是
func updateSearchResultsForSearchController(searchController:UISearchController){
if count(searchController.searchBar.text) > 0{
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text)
let array = (tabledata as NSArray).filteredArrayUsingPredicate(searchPredicate)
filteredTableData = array as! [String]
self.tblView.reloadData()
}else if count(searchController.searchBar.text) == 0 {
filteredTableData = tabledata
self.tblView.reloadData()
}
您可以按照Saad的想法进行操作:
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
if count(searchBar.text) > 0{
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchBar.text)
let array = (tabledata as NSArray).filteredArrayUsingPredicate(searchPredicate)
filteredTableData = array as! [String]
self.tblView.reloadData()
}else if count(searchBar.text) == 0 {
filteredTableData = tabledata
self.tblView.reloadData()
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.