您的位置:首页 > 产品设计 > UI/UE

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: