UISearchBar 和 UISearchDisplayController的使用
来源:互联网 发布:java主函数的写法 编辑:程序博客网 时间:2024/05/18 03:35
之前比較少用UISearchBar 和 UISearchDisplayController,最近閱讀了一些有關資料,簡單做個筆記:
1、UISearchBar 和 UISearchDisplayController 在IB中是可以直接使用的,UISearchBar如果不指定delegate及執行相關的方法,那麼與一個TextField類似。加入一個UISearchDisplayController,它會附帶了一個UISearchBar,參考UISearchDisplayController Reference會發現,它其實還有一個searchResultTableView,用於顯示搜尋到的結果。所以,如果要使用UISearchDisplayController時,記得要設定TableView的兩個delegate。
2、以下例子使用代碼創建UISearchBar 和 UISearchDisplayController,注意UISearchDisplayController的創建使用了以下的方法:
- (id)initWithSearchBar:(UISearchBar *)searchBar contentsController:(UIViewController *)viewController;
首先要在主ViewController中加入
<UISearchBarDelegate,UISearchDisplayDelegate,UITableViewDelegate,UITableViewDataSource>
並宣告了兩個物件:mySearchBar和 mySearchDisplayController,然後在.m文件中加入如下代碼:
mySearchBar = [[UISearchBar alloc] init];
//可以加入搜索範圍選項scope
[mySearchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"First",@"Last",nil]];
mySearchBar.delegate = self;
[mySearchBar setAutocapitalizationType:UITextAutocapitalizationTypeNone];
[mySearchBar sizeToFit];
//將UISearchBar加入View中,本例加入到一個TableView中,作為其HeadView
//[self.view addSubview:mySearchBar];
self.myTableView.tableHeaderView = mySearchBar;
//本例調整了TableView的大小和位置
self.myTableView.frame = CGRectMake(60, 40, 260, self.myTableView.frame.size.height);
mySearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:mySearchBarcontentsController:self];
//以下一句代碼有點令人困惑,試過取消這句代碼,仍能正常運行
[self setMySearchDisplayController:mySearchDisplayController];
[mySearchDisplayController setDelegate:self];
[mySearchDisplayController setSearchResultsDataSource:self];
[mySearchDisplayController setSearchResultsDelegate:self];
3、以下加入UISearchBar 和 UISearchDisplayController 的一些delegate作為示範:
#pragma mark UISearchBar and UISearchDisplayController Delegate Methods
-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{
//準備搜尋前,把上面調整的TableView調整回全屏幕的狀態,如果要產生動畫效果,要另外執行animation代碼
self.myTableView.frame = CGRectMake(0, 0, 320, self.myTableView.frame.size.height);
return YES;
}
-(BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar{
//搜尋結束後,恢復原狀,如果要產生動畫效果,要另外執行animation代碼
self.myTableView.frame = CGRectMake(60, 40, 260, self.myTableView.frame.size.height);
return YES;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchString:(NSString *)searchString
{
//一旦SearchBar輸入內容有變化,則執行這個方法,詢問要不要重裝searchResultTableView的數據
[self filterContentForSearchText:searchString scope:
[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
// Return YES to cause the search result table view to be reloaded.
return YES;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchScope:(NSInteger)searchOption
{
//一旦Scope Button有變化,則執行這個方法,詢問要不要重裝searchResultTableView的數據
[self filterContentForSearchText:[self.searchDisplayController.searchBar text] scope:
[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:searchOption]];
// Return YES to cause the search result table view to be reloaded.
return YES;
}
- UISearchBar和 UISearchDisplayController的使用
- UISearchBar和 UISearchDisplayController的使用
- UISearchBar 和 UISearchDisplayController的使用
- UISearchBar 和 UISearchDisplayController的使用
- UISearchBar和 UISearchDisplayController的使用
- UISearchBar 和 UISearchDisplayController的使用
- UISearchBar 和 UISearchDisplayController的使用
- UISearchBar和 UISearchDisplayController的使用
- UISearchBar 和 UISearchDisplayController的使用
- UISearchBar 和 UISearchDisplayController的使用
- UISearchBar和 UISearchDisplayController的使用
- UISearchBar 和 UISearchDisplayController的使用
- UISearchBar 和 UISearchDisplayController的使用
- iOS UISearchBar 和 UISearchDisplayController的使用
- 关于UISearchDisplayController和 uisearchBar使用时遇到的问题
- IOS UISearchBar + UISearchDisplayController使用
- UISearchBar和UISearchDisplayController
- UISearchBar和UISearchDisplayController
- java ee服务器使用get方法,接收中文的方法
- Qt之qss文件编写
- FD
- SpringMVC深度探险(一) —— SpringMVC前传
- 用户空间缺页异常pte_handle_fault()分析--(上)
- UISearchBar 和 UISearchDisplayController的使用
- HDU 2639
- SpringMVC深度探险(二) —— SpringMVC概览
- 黑马程序员——打印菱形,打印等腰三角形
- 扩展欧几里德
- SpringMVC深度探险(三) —— DispatcherServlet与初始化主线
- UVA 10361
- SpringMVC深度探险(四) —— SpringMVC核心配置文件详解
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建项目