当我编写有关Table View的内容时,我发现了
自IOS8以来,UISearchDisplayDelegate(& UISearchDisplayController)已被弃用
官方API文档导入了
UISearchControllerDelegate(安培; UISearchController)
旧代理可以执行许多任务(我们知道API文档将函数分类为这些类可以执行的任务),例如:
[搜索州变更]
[加载和卸载表格视图]
[显示和隐藏表格视图]
[回应搜索标准的变化]
但,最新代表只包含一种任务:
[呈现和解除SearchController] - >(包含4个函数,每个呈现和解除2个)
让我感到困惑的是我如何使用如此少量的函数来满足以下要求:更改字符串的搜索条件 - 或 - 隐藏搜索栏(设置搜索栏的高度)需要的。
例如,在这个todo应用中,我有2个数组:todos(包含所有数据)& filteredtodos(包含关键字的数据)
然后我在TableView上添加[搜索栏和搜索显示]组件
接下来我去找[UISearchDisplayDelegate]中的函数原型:
func searchDisplayController(controller: UISearchDisplayController, shouldReloadTableForSearchString searchString: String!) -> Bool
{
filteredTodos = todos.filter(){
$0.title.rangeOfString(searchString) != nil
}
return true
}
过滤关键字。
显示正常情况下的细胞或搜索条件
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
if(tableView == searchDisplayController?.searchResultsTableView){//Deprecated!!!
return filteredTodos.count//Searching Display
}else{
return todos.count//Normal Display
}
}
Xcode提示告诉我, searchDisplayController 的使用已被弃用。
希望你能帮帮我!!!欣赏!!答案 0 :(得分:0)
来自Apple的文档:
protocol UISearchResultsUpdating : NSObjectProtocol {
// Called when the search bar's text or scope has changed or when the search bar becomes first responder.
func updateSearchResultsForSearchController(searchController: UISearchController)
}
让您的视图控制器符合UISearchResultsUpdating
并且它应该可以解决您的问题。