iOS UISearchController Class Reference
2016-06-07 21:08
513 查看
一个
一个搜索控制器与两个你提供的视图控制器工作。第一个视图控制器展示你的可搜索内容,第二个展示你的搜索结果。第一个视图控制器是你的应用程序的主界面的一部分,并且你可以使用任何方式展示它,使它适合你的应用程序。当初始化搜索控制器的时候,你传入第二个视图控制器到
每个搜索控制器提供一个
当用户与搜索栏交互的时候,搜索控制器通知它的
清单1展示了如何从展示可搜索内容的视图控制器中配置一个搜索控制器。。此代码创建了另一个自定义视图控制器来展示搜索结果并且使用该对象创建搜索控制器对象。当前视图控制器对象保存了一个搜索控制器的引用并且当搜索词变化时处理更新。视图控制器也充当搜索结果的呈现背景,这通常是你想要的。
清单1 创建和配置搜索控制器:
要自定义搜索结果控制器的展示和消失,对控制器的
注意:
虽然一个
使用特定的视图控制器初始化并返回一个搜索控制器用来显示搜索结果。
参数:
返回值:一个初始化的搜索控制器。
创建搜索控制器之后,总是要把一个对象赋值给
在你界面安装的导航栏(只读)。
当展示你的可搜索内容之前,在你的视图控制器界面的某处安装搜索栏在这个属性。这个搜索栏变成了搜索内容的开始,与搜索栏的交互由
要使用
这个属性控制更新搜索结果控制器的内容。
赋值一个采用
显示搜索结果的视图控制器
当用户在搜索栏中输入文本的时候,搜索控制器立即显示这个视图并且没有任何动画。你负责传入搜索结果到这个视图控制器使它们展示出来。你使用
当这个属性的值为
搜索界面的呈现状态。
当用户点击正在编辑的搜索栏的输入框的时候,搜索控制器自动显示搜索结果控制器。通常,你获取这个属性的值来确定搜索结果是否已经呈现。然而,你可以设置这个属性的值为YES来迫使搜索界面呈现,即使用户没有点击搜索框。
这个属性的默认值是NO。
一个布尔值,指示搜索时底层的内容是否被隐藏。
当这个属性的值为YES的时候,当你与搜索栏交互的时候会隐藏包含可搜索内容的视图控制器。当这个属性的值为NO的时候,搜索控制器不会隐藏原来的视图控制器。这个属性仅仅控制最初是否隐藏原来的视图控制器。当用户在搜索栏中输入文本的时候,搜索控制器立即将结果显示在搜索结果控制器中。
如果使用相同的视图控制器来展示可搜索内容和搜索结果,建议你将此属性设置为NO。这个属性的默认值为NO。
布尔值,指示搜索过程中是否将底层的内容显示为灰色。
使用
补位置,指示自搜索时是否将导航栏隐藏。
这个属性的默认值为YES。
搜索控制器的代理。
当搜索结果视图控制器展示和消失的时候使用代理对象来收到通知。你可能使用这些通知来自定义搜索界面或执行相关操作。
UISearchController对象管理基于一个搜索栏交互的搜索结果展示。你使用搜索控制器与一个已经存在的视图控制器串联。当你拥有一个可以搜索内容的视图控制器的时候,集成
UISearchController的搜索栏到你的视图控制器接口。当用户使用搜索栏交互的时候,搜索控制器会自动显示你指定搜索结果的新的视图控制器。
一个搜索控制器与两个你提供的视图控制器工作。第一个视图控制器展示你的可搜索内容,第二个展示你的搜索结果。第一个视图控制器是你的应用程序的主界面的一部分,并且你可以使用任何方式展示它,使它适合你的应用程序。当初始化搜索控制器的时候,你传入第二个视图控制器到
initWithSearchResultsController:方法,并且搜索控制器在适当的时候展示那个视图控制器。
每个搜索控制器提供一个
UISearchBar对象,你必须将它融入到你初始化的视图控制器界面。将这个对象加入到你的包含可搜索内容的视图中。例如,如果你对可搜索的内容使用一个列表视图,你可以将搜索栏赋值给那个列表视图的
tableHeaderView属性。当用户点击搜索栏来输入一个搜索词时,搜索控制器自动展示你的搜索结果的视图控制器并且通知你的应用程序搜索进程已经开始。
当用户与搜索栏交互的时候,搜索控制器通知它的
searchResultsUpdater属性的对象。你提供搜索结果更新的对象你必须符合
UISearchResultsUpdating协议。你使用这个协议的方法老搜索你的内容并且将结果提供给你的搜索结果视图控制器。通常情况下你的可搜索内容的视图控制器也可以用作搜索结果更新对象,但是如果你喜欢,你可以使用其它对象。
清单1展示了如何从展示可搜索内容的视图控制器中配置一个搜索控制器。。此代码创建了另一个自定义视图控制器来展示搜索结果并且使用该对象创建搜索控制器对象。当前视图控制器对象保存了一个搜索控制器的引用并且当搜索词变化时处理更新。视图控制器也充当搜索结果的呈现背景,这通常是你想要的。
清单1 创建和配置搜索控制器:
// Create the search results controller and store a reference to it. MySearchResultsController* resultsController = [[MySearchResultsController alloc] init]; self.searchController = [[UISearchController alloc] initWithSearchResultsController:resultsController]; // Use the current view controller to update the search results. self.searchController.searchResultsUpdater = self; // Install the search bar as the table header. self.tableView.tableHeaderView = self.searchController.searchBar; // It is usually good to set the presentation context. self.definesPresentationContext = YES;
要自定义搜索结果控制器的展示和消失,对控制器的
delegate属性赋值一个对象。代理对象必须符合
UISearchControllerDelegate代理。当搜索控制本身被激活和当搜索结果控制器显示或消失时通知你使用那个代理的方法。
注意:
虽然一个
UISearchController对象是一个视图控制器,你永远不应该直接从你的界面呈现它。如果你想明确的呈现搜索结果界面,包裹你的搜索控制器在一个
UISearchContainerViewController对象中并且推出这个对象。
初始化搜索控制器
- (instancetype)initWithSearchResultsController:(UIViewController *)searchResultsController
使用特定的视图控制器初始化并返回一个搜索控制器用来显示搜索结果。
参数:
searchResultsController。显示搜索结果的视图控制器。如果你想在显示你的可搜索内容的视图控制器中显示搜索结果,特定为
nil。
返回值:一个初始化的搜索控制器。
创建搜索控制器之后,总是要把一个对象赋值给
searchResultsUpdater属性。搜索控制器使用这个对象更新搜索结果。
管理搜索结果
@property(nonatomic, strong, readonly) UISearchBar *searchBar
在你界面安装的导航栏(只读)。
当展示你的可搜索内容之前,在你的视图控制器界面的某处安装搜索栏在这个属性。这个搜索栏变成了搜索内容的开始,与搜索栏的交互由
UISearchController对象自动处理——当搜索信息变化的时候通知
searchResultUpdater属性中的对象。
要使用
UISearchBar的自定义子类,继承
UISearchController并且实现这个属性来返回你的自定义搜索栏。
@property(nonatomic, weak) id< UISearchResultsUpdating > searchResultsUpdater
这个属性控制更新搜索结果控制器的内容。
赋值一个采用
UISearchResultsUpdating协议的对象。使用这个协议的方法来搜索你的内容并且将结果提供给你的搜索结果视图控制器。这个包含于
searchResultsUpdater的对象往往是初始化时设置的视图控制器。
@property(nonatomic, strong, readonly) UIViewController *searchResultsController
显示搜索结果的视图控制器
当用户在搜索栏中输入文本的时候,搜索控制器立即显示这个视图并且没有任何动画。你负责传入搜索结果到这个视图控制器使它们展示出来。你使用
searchResultsUpdater属性中的对象做这个。
当这个属性的值为
nil的时候,搜索控制器不会为搜索结果推出一个单独的视图控制器。相反,你应该使用包含搜索栏和可搜索内容的原始视图控制器显示结果。
@property(nonatomic, assign, getter=isActive) BOOL active
搜索界面的呈现状态。
当用户点击正在编辑的搜索栏的输入框的时候,搜索控制器自动显示搜索结果控制器。通常,你获取这个属性的值来确定搜索结果是否已经呈现。然而,你可以设置这个属性的值为YES来迫使搜索界面呈现,即使用户没有点击搜索框。
这个属性的默认值是NO。
配置搜索界面
@property(nonatomic, assign) BOOL obscuresBackgroundDuringPresentation
一个布尔值,指示搜索时底层的内容是否被隐藏。
当这个属性的值为YES的时候,当你与搜索栏交互的时候会隐藏包含可搜索内容的视图控制器。当这个属性的值为NO的时候,搜索控制器不会隐藏原来的视图控制器。这个属性仅仅控制最初是否隐藏原来的视图控制器。当用户在搜索栏中输入文本的时候,搜索控制器立即将结果显示在搜索结果控制器中。
如果使用相同的视图控制器来展示可搜索内容和搜索结果,建议你将此属性设置为NO。这个属性的默认值为NO。
@property(nonatomic, assign) BOOL dimsBackgroundDuringPresentation
布尔值,指示搜索过程中是否将底层的内容显示为灰色。
使用
obscuresBackgroundDuringPresentation属性代替。
@property(nonatomic, assign) BOOL hidesNavigationBarDuringPresentation
补位置,指示自搜索时是否将导航栏隐藏。
这个属性的默认值为YES。
访问代理
@property(nonatomic, weak) id< UISearchControllerDelegate > delegate
搜索控制器的代理。
当搜索结果视图控制器展示和消失的时候使用代理对象来收到通知。你可能使用这些通知来自定义搜索界面或执行相关操作。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解