UISearchDisplayController搜索栏控制器
2015-12-28 08:38
316 查看
//UISearDiaplayController继承于NSObject的控件,自身包含UITableView控件,用于显示搜索结果的列表
//数据的查询和刷新使用代理,实现查询和显示的功能需要遵守UITableViewDataSource,UITableViewDelegate, UISearchDisplayDelegate三个协议
//下面只我在XCode复制出来的类,做了小小的翻译,如有不对麻烦纠正
@interface UISearchDisplayController :
NSObject
//初始化函数,绑定搜索栏和指定视图控制器 PS:不明白blog总是说它里面含有UISearchBar这个控件,既然需要外部指定才有的,何来的包含???求解
- (instancetype)initWithSearchBar:(UISearchBar *)searchBar contentsController:(UIViewController *)viewController;
//代理属性 条件:遵守UISearchDiaplayDelegate协议
@property(nullable,nonatomic,assign) id<UISearchDisplayDelegate>
delegate;
@property(nonatomic,getter=isActive)BOOL active; //控制导航栏是否获得焦点
- (void)setActive:(BOOL)visible animated:(BOOL)animated; //设置导航栏是否获得焦点,是否有动画效果
@property(nonatomic,readonly)UISearchBar *searchBar;//初始化函数所绑定的UISearchBar
@property(nonatomic,readonly)UIViewController *searchContentsController;//初始化绑定 的控制器
@property(nonatomic,readonly)UITableView *searchResultsTableView; //显示搜索结果的UITableView
@property(nullable,nonatomic,weak)id<UITableViewDataSource>
searchResultsDataSource; //给UITableview指定代理(必须指定)
@property(nullable,nonatomic,weak)id<UITableViewDelegate>
searchResultsDelegate; //给UITableview指定代理(必须指定)
@property(nullable,nonatomic,copy)NSString *searchResultsTitleNS_AVAILABLE_IOS(5_0);//搜索结果的标题
@property (nonatomic,assign)BOOL displaysSearchBarInNavigationBarNS_AVAILABLE_IOS(7_0);//控制搜索时导航栏是否显示
@property (nullable,nonatomic,readonly)UINavigationItem
*navigationItemNS_AVAILABLE_IOS(7_0);
@end
@protocol UISearchDisplayDelegate <NSObject>
@optional
- (void) searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controllerNS_DEPRECATED_IOS(3_0,8_0);
- (void) searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controllerNS_DEPRECATED_IOS(3_0,8_0);//活的焦点时调用的方法
- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controllerNS_DEPRECATED_IOS(3_0,8_0);
- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controllerNS_DEPRECATED_IOS(3_0,8_0);//失去焦点时调用的方法
//加载数据到tableview时调用的操作
- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
//卸载数据时做的操作
- (void)searchDisplayController:(UISearchDisplayController *)controller willUnloadSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
// 控制tableview的显示或隐藏
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
- (void)searchDisplayController:(UISearchDisplayController *)controller willHideSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
//常用的代理方法,返回YES表示搜索完后无需手动reload tableView显示搜索结果,系统自动加载
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(nullableNSString
*)searchString NS_DEPRECATED_IOS(3_0,8_0);
//切换搜索范围的时候调用该函数
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOptionNS_DEPRECATED_IOS(3_0,8_0);
@end
//数据的查询和刷新使用代理,实现查询和显示的功能需要遵守UITableViewDataSource,UITableViewDelegate, UISearchDisplayDelegate三个协议
//下面只我在XCode复制出来的类,做了小小的翻译,如有不对麻烦纠正
@interface UISearchDisplayController :
NSObject
//初始化函数,绑定搜索栏和指定视图控制器 PS:不明白blog总是说它里面含有UISearchBar这个控件,既然需要外部指定才有的,何来的包含???求解
- (instancetype)initWithSearchBar:(UISearchBar *)searchBar contentsController:(UIViewController *)viewController;
//代理属性 条件:遵守UISearchDiaplayDelegate协议
@property(nullable,nonatomic,assign) id<UISearchDisplayDelegate>
delegate;
@property(nonatomic,getter=isActive)BOOL active; //控制导航栏是否获得焦点
- (void)setActive:(BOOL)visible animated:(BOOL)animated; //设置导航栏是否获得焦点,是否有动画效果
@property(nonatomic,readonly)UISearchBar *searchBar;//初始化函数所绑定的UISearchBar
@property(nonatomic,readonly)UIViewController *searchContentsController;//初始化绑定 的控制器
@property(nonatomic,readonly)UITableView *searchResultsTableView; //显示搜索结果的UITableView
@property(nullable,nonatomic,weak)id<UITableViewDataSource>
searchResultsDataSource; //给UITableview指定代理(必须指定)
@property(nullable,nonatomic,weak)id<UITableViewDelegate>
searchResultsDelegate; //给UITableview指定代理(必须指定)
@property(nullable,nonatomic,copy)NSString *searchResultsTitleNS_AVAILABLE_IOS(5_0);//搜索结果的标题
@property (nonatomic,assign)BOOL displaysSearchBarInNavigationBarNS_AVAILABLE_IOS(7_0);//控制搜索时导航栏是否显示
@property (nullable,nonatomic,readonly)UINavigationItem
*navigationItemNS_AVAILABLE_IOS(7_0);
@end
@protocol UISearchDisplayDelegate <NSObject>
@optional
- (void) searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controllerNS_DEPRECATED_IOS(3_0,8_0);
- (void) searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controllerNS_DEPRECATED_IOS(3_0,8_0);//活的焦点时调用的方法
- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controllerNS_DEPRECATED_IOS(3_0,8_0);
- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controllerNS_DEPRECATED_IOS(3_0,8_0);//失去焦点时调用的方法
//加载数据到tableview时调用的操作
- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
//卸载数据时做的操作
- (void)searchDisplayController:(UISearchDisplayController *)controller willUnloadSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
// 控制tableview的显示或隐藏
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
- (void)searchDisplayController:(UISearchDisplayController *)controller willHideSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableViewNS_DEPRECATED_IOS(3_0,8_0);
//常用的代理方法,返回YES表示搜索完后无需手动reload tableView显示搜索结果,系统自动加载
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(nullableNSString
*)searchString NS_DEPRECATED_IOS(3_0,8_0);
//切换搜索范围的时候调用该函数
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOptionNS_DEPRECATED_IOS(3_0,8_0);
@end
相关文章推荐
- [LeetCode] 128. Longest Consecutive Sequence 解题思路
- uinavigationcontrollerdemo
- EasyUI表单内容整理
- Masonry自动计算行高
- juery动态添加删除表格中的行
- iOS UITableView(三) 为tableView添加图片实现电话薄
- 对UIView动画和Core Animation的关系的一点理解
- 《MVC + EasyUI 》——利用Ajax给Action传值
- Ant之build.xml详解
- 解决UNIX环境高级变成中找不到apue.h问题
- Unique Snowflakes
- iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法
- Subsequence-二分
- 【转】How-To-Ask-Questions-The-Smart-Way
- LeetCode之Divide and Conquer题目汇总
- 如何利用TableView显示自定义nib中创建的UITableViewCell或子类?
- 透明UI设计
- 给一个视图添加圆角效果
- 怎么设置随机色
- STL学习三:deque容器