如何使用UISearchControllerDelegate

时间:2015-09-20 14:06:37

标签: ios swift

当我编写有关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 的使用已被弃用。

希望你能帮帮我!!!欣赏!!

1 个答案:

答案 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并且它应该可以解决您的问题。