第四章:IOS Table表视图搜索功能UISearchBar

UISearchBar经常会跟UITable一齐使用,所以在此就介绍一下UISearchBar

先来看看结构

下面再看看它有哪些样式

  • 基本搜索栏。里面􏰵􏰲的Search文字用于提示用户􏰶入查询关􏰷字,搜索栏的Placeholder属性可以设置这个提示信息 

  • 带有􏰸除按钮的搜索栏。在􏰶入框中􏰷入文字时,会在后面出现􏰵􏰲􏰸除按钮,点􏰹􏰸除按钮可以􏰸除􏰶入框中的文字

  • 带有查询结果按钮的搜索栏。显示最􏰺搜索结果,显示设定如图4-31所示,选中 Options下的Shows Search Results Button复选框,事件􏰻应由UISearch- BarDelegate对象中的searchBarResultsListButtonClicked:方法管理 

  • 带有书签按钮的搜索栏。显示用户收􏰼的书签列表,显示设定如图4-31所示,选 中Options 中的Shows Bookmarks Button复选框,事件􏰻应由UISearchBarDelegate 对象中的searchBarBookmarkButtonClicked:方法管理 

  • 带有取􏰽按钮的搜索栏。显示设定如图4-31所示,选中Options下的Show Cancel Button复选框,事件􏰻应由UISearchBarDelegate对象中的searchBarCancel- ButtonClicked:方法管理 

  • 带有Scope的搜索栏。显示设定如图4-31所示,选中Options下的Shows Scope Bar 复选框,同时需要设定下面的Scope Titles。选中这个选项时,搜索栏一出现􏰫 会在下面显示Scope Titles。如果􏰾􏰿化时不􏱀显示,􏰥在搜索栏􏰭得􏱁点时显 示,􏱂可以在视图控制器的viewDidLoad方法中加入下面的代码:

    [self.searchBar setShowsScopeBar:NO];
    [self.searchBar sizeToFit]; 其次,事件􏰻应由UISearchBarDelegate或 UISearchDisplayDelegate对象管理 

 

注:搜索的时候可以用 这个类NSPredicate具体使用方法可以在百度一下

 

在使用前必须使用两个协议

  • UISearchBarDelegate
  • UISearchDisplayDelegate

在搜索栏中􏰶入查询􏱋件,会􏳆发UISearchBarDelegate委托对象的searchBar:textDidChange:方法和 UISearchDisplayDelegate委托对象的searchDisplayController:shouldReloadTableForSearchString:方 法,我们实现􏱙们其中之一􏰫可以􏳇到搜索的基本目的。searchDisplayController:shouldReloadTable- ForSearchString:方法的优􏳈在于可以控制表视图数据源是否重新加载。如果采用UISearchBarDelegate委托对象的searchBar:textDidChange:方法实现搜索功能,我们还需

要自己调用[tableView reloadData]方法重新加载表视图数据。

 

本例中实现了searchDisplayController: shouldReloadTableForSearchString:方法,􏱙在ViewController.m文件中的实现代码如下:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    //如果􏳉回YES􏱱􏳊表视图可􏳋重新加载
    return YES;

} 

 IOS9之后已经不再建议使用UISearchDisplayController,已经改用UISearchController而且在xcode7.2.1版本里面,界面是不能拖出UISearchController

 

posted @ 2016-03-01 22:17  长命百岁  阅读(351)  评论(0编辑  收藏  举报