我有一个UITableViewController(带有6个单元格)和一个UISearchController。每当我点击搜索栏时,表格视图单元格就会消失并被替换为空的tableView,直到我开始输入内容并显示搜索结果。当我点击搜索栏时,如何才能使单元格保持在下面? 这是我与SearchController有关的代码:
在viewDidLoad()中:
xsl:include
其余的:
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = true
controller.searchBar.sizeToFit()
controller.searchBar.barTintColor = UIColor(red: 240/255, green: 240/255, blue: 240/255, alpha: 1)
self.tableView.tableHeaderView = controller.searchBar
self.definesPresentationContext = true
return controller
})()
截图:
加成: 有没有办法让这些细胞可选?
答案 0 :(得分:1)
如果searchText为空,则将filteredTableData
设置为items
extension TableViewController: UISearchResultsUpdating {
func updateSearchResultsForSearchController(searchController: UISearchController) {
var filteredArray : [TextCell] = [TextCell]()
if searchController.searchBar.text == "" {
filteredArray = self.items
} else {
for textCell in self.items
{
if (textCell.userName.rangeOfString(searchController.searchBar.text) != nil ||
textCell.userPreferredName.rangeOfString(searchController.searchBar.text) != nil ||
textCell.userText.rangeOfString(searchController.searchBar.text) != nil)
{
filteredArray.append(textCell)
}
}
}
filteredTableData = filteredArray
self.tableView.reloadData()
}
}
答案 1 :(得分:0)
您可以做的是首先填充filteredDataArray而不进行过滤,然后按原样应用过滤。在开始搜索之前,您没有将filteredDataArray设置为任何内容,因此在搜索开始时将其设置为完整数据集。
奖金:
您可以使用tableViewDidSelectRowAtIndexPath来捕获选择,这甚至可以在搜索表视图中使用。