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

先来看看结构

ios搜索按钮点击事件 iphone搜索界面_xcode

下面再看看它有哪些样式

基本搜索栏。里面??的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