UISearchBar继承自UIView、UIResponder、NSObject

  • 属性:

autocapitalizationType————自动对输入文本对象进行大小写设置(包含4种类型,但是有时候键盘会屏蔽此属性)

autocorrectionType————自动对输入文本对象进行纠错。

backgroundImage————searchbar的背景图片,如果图片不是可伸缩的或者1点宽,则一般被平铺

barStyle————控件的样式

delegate————控件的委托,委托要遵从UISearchBarDelegate协议,默认是nil

keyboardType————输入时,键盘的样式

placeholder————半透明的提示文字,输入搜索内容消失

prompt————显示在控件顶部的一行提示文字

text————控件上面的显示的文字
 showsBookmarkButton————是否在控件的右端显示一个书的按钮(输入文字时消失)
 showsCancelButton————是否显示cancel按钮(默认是显示)
 showsSearchResultsButton————是否在控件的右端显示搜索结果按钮
 searchResultsButtonSelected————搜索结果按钮是否被选中
 tintColor————bar的颜色(具有渐变效果)
 translucent————指定控件是否会有透视效果
 scopeButtonTitles————搜索栏下部的选择栏,数组里面的内容是按钮的标题
 selectedScopeButtonIndex————搜索栏下部的选择栏按钮的个数
 showsScopeBar————控制搜索栏下部的选择栏是否显示出来(需设置为YES 才能使用scopebar)

UISearchBar不执行搜索行为,必须使用delegate,当输入搜索文本、点击button按钮后,代理的方法会完成搜索对应的操作。

1.编辑输入事件:

2.点击按钮事件:

3.Scope按钮事件:

利用UISearchBar的委托事件 textDidChange, 当在搜索框中输入完成后,如果输入的文本长度>0,可以调用自己的搜索方法,得到搜索结果,然后再reloadData,刷新一下。如果输入文本长 度<0,则需要恢复到原始数据。这个方法可以在边输入搜索文本边显示结果。 如果需要按“search”按钮再搜索,则将上述操作放在searchBarSearchButtonClicked中。

利用UISearchDisplayController可以简化很多操作,也能达到搜索的目的。

属性:

active————是搜索界面可视化,默认为no,可用setActive方法设置.

delegate————委托

searchBar————在searchdisplaycontroller初始化后,searchbar是不可修改的,是readonly属性的.

searchContentController————管理搜索内容的试图控制器,一般是一个UITableViewController的实例,意思是针对一个UITableView的内容进行搜索

searchResultsDataSource————搜索结果的数据源

searchResultsDelegate————搜索结果的委托

searchResultsTableView————搜索结果要展示在哪个tableview中(read-only);

searchResultsTitle————搜索结果视图的title

初始化一个searchDisplayController:

UISearchBar * theSearchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(, , self.view.bounds.size.width-, )] autorelease];

        theSearchBar.placeholder = @"enter province name";

        theSearchBar.autocorrectionType = UITextAutocorrectionTypeNo;

        theSearchBar.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;  

        theSearchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"All",@"A",@"B",@"C",@"D" ,nil];

        theSearchBar.showsScopeBar = YES;

        theSearchBar.keyboardType = UIKeyboardTypeNamePhonePad;

        theSearchBar.showsBookmarkButton = YES;

        tableView.tableHeaderView = theSearchBar;  //将searchBar添加到tableView的头,注意滚动出屏幕后,搜索框也不在了,只出现在首页

UISearchDisplayController * searchdispalyCtrl = [[UISearchDisplayController  alloc] initWithSearchBar:theSearchBar contentsController:self];

        searchdispalyCtrl.active = NO;

        searchdispalyCtrl.delegate = self;

        searchdispalyCtrl.searchResultsDelegate=self;

        searchdispalyCtrl.searchResultsDataSource = self;

使用UISearchDisplayDelegate的委托方法进行搜索操作:

1.搜索状态改变:

2.装载和卸载tableview:

3.显示和隐藏tableview:

4.搜索条件改变时响应:

searchDisplayController 自身有一个searchResultsTableView,所以在执行操作的时候首先要判断是否是搜索结果的tableView,如果是显示的就是搜索结 果的数据,如果不是,是TableView自身的view,则需要显示原始数据。

if(tableView == self.searchDisplayController.searchResultsTableView){
arr = [self.filterContent valueForKey:key]; //搜索结果
} else{
arr = [self.localresource valueForKey:key]; //原始数据
}

这样就不需要每次都realoadData了。

一 个很好的实例可以参考:http://developer.apple.com/library/ios/#samplecode /TableSearch/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007848

iOS--UISearchBar和UISearchDisplayController的更多相关文章

  1. 如何在UINavigationBar上添加UISearchBar以及UISearchDisplayController的使用 --OC --iOS

    那我们开始吧,下面是Sely写的一个Demo,分享给大家. 新建一个项目, UISearchDisplayController 的 displaysSearchBarInNavigationBar太死 ...

  2. UISearchBar和 UISearchDisplayController的使用

    感觉好多文章不是很全面,所以本文收集整合了网上的几篇文章,感觉有互相补充的效果. 如果想下载源码来看:http://code4app.com/search/searchbar .本源码与本文无关 1. ...

  3. iOS UISearchBar UISearchController

    搜索栏的重要性我们就不说了,狼厂就是靠搜索起家的,现在越来越像一匹没有节操的狼,UC浏览器搜索栏现在默认自家的神马搜索,现在不管是社 交,O2O还是在线教育等都会有一个搜索栏的实现,不过彼此实现效果是 ...

  4. UISearchBar和UISearchDisplayController

    原文 http://hi.baidu.com/happywilma0118/item/e6d5730a499bba1b3a53eef8 UISearchBar继承自UIView.UIResponder ...

  5. ios UISearchBar搜索框的基本使用

    摘要: 小巧简洁的原生搜索框,漂亮而易用,如果我们的应用没有特殊需求,都可以使用它. iOS中UISearchBar(搜索框)使用总结 初始化:UISearchBar继承于UIView,我们可以像创建 ...

  6. iOS UISearchBar 设置取消按钮,回收键盘,并修改cancel为“取消”

    继承协议: UISearchBarDelegate 在代理方法中设置: #pragma mark --- 搜索框开始编辑 --- - (void)searchBarTextDidBeginEditin ...

  7. 【iOS UISearchBar父控件是UIScrollView时,上移的问题】

    如果UISearchViewController的父控件是UIScrollView,点击UISearchBar后,它会移出控制器外.如下,使用UIScrollView作为"消息"和 ...

  8. iOS UISearchBar学习笔记

    UISearchBar 是一个搜索控件,它提供了一个文本输入框,一个查找button,一个书签button.一个取消button.我们须要使用UISearchBarDelegate代理来进行查找工作. ...

  9. ios - UISearchBar输入框背景色

    //输入框背景色 bar.searchBarStyle = UISearchBarStyleMinimal; [bar positionAdjustmentForSearchBarIcon:UISea ...

  10. iOS开发之直接使用UISearchBar

    iOS开发中经常需要使用SearchBar,我们可以选择使用UISearchBar+UISearchController或者UISearchBar+UISearchDisplayController( ...

随机推荐

  1. Lua中的协同程序 coroutine

    Lua中的协程和多线程很相似,每一个协程有自己的堆栈,自己的局部变量,可以通过yield-resume实现在协程间的切换.不同之处是:Lua协程是非抢占式的多线程,必须手动在不同的协程间切换,且同一时 ...

  2. Mina、Netty、Twisted一起学(一):实现简单的TCP服务器

    MINA.Netty.Twisted为什么放在一起学习?首先,不妨先分别看一下它们官方网站对其的介绍: MINA: Apache MINA is a network application frame ...

  3. 【转载】dirs、pushd、popd指令

    转载自:http://hi.baidu.com/linuxtrip/item/47a38c8eec00e98f4414cfb7 一.目录栈指令 目录栈是用户最近访问过的系统目录列表,并以堆栈的形式管理 ...

  4. PintJS – 轻量,并发的 GruntJS 运行器

    PintJS 是一个小型.异步的 GruntJS 运行器,试图解决大规模构建流程中的一些问题. 典型的Gruntfile 会包括 jsHint,jasmine,LESS,handlebars, ugl ...

  5. 15个私有云上的DevOps 开源工具

    本文由来:之前工作需要,在查找运维自动化资料时,发现了这篇文章的英文原版,觉得很不错.它综合的介绍了哪些工具,我们运维人员需要掌握,并且如何进行结合其它工具一起使用.给了一些指导性的意见.由于是英文的 ...

  6. sqlite3存储格式

    本篇介绍sqlite3数据库文件的存储格式.通过阅读源读源代码可以知道sqlite的设计思想.一个sqlite数据库文件对应着一个数据库.sqlite将数据库文件划分大小一致的存储(以区分内存)页面, ...

  7. SQL SERVER2008及以上版本数据库自动备份的三种方法

    方法一:创建一个维护计划对数据库进行备份 方法二:创建一个SQL作业对数据库进行备份 方法三:创建WINDOWS任务计划对数据库进行备份 方法一与方法二其实原理基本相同,都必需开启SQL代理服务,都会 ...

  8. Weblogic魔法堂:AdminServer.lok被锁导致启动、关闭域失败

    一.判断AdminServer.lok被其进程锁死 >weblogic.management.ManagementException: Unable to obtain lock on **** ...

  9. 四、Handler(WSGIHandler)

    1.1       类视图关系 Handler主要负责处理HTTP请求,并生成相应的相应,process_request,process_response是两个最主要的成员.下图是WSGIHandle ...

  10. [C#高级编程].NET体系结构

    本章内容: 编译和运行面向 .NET的代码 MSIL的优点 值类型和引用类型 数据类型化 理解错误处理和特性 程序集..NET基类和命名空间 本章主要介绍一些概念,内容不多. C#是专门为Micros ...