關于搜索一般使用UISearchbar + UISearchDisplayController 實現, UISearchController畢竟iOS8才出來的. 簡單搜索建議使用. 如果需求比較苛刻的話 ,還是用textfild 更容易自定義.
屏幕快照 2016-06-30 13.46.46.png
直接上代碼...
-(void)filterContentForSearchText:(NSString*)searchText{
//我這里把沒有 文本時讀取數據庫 的情形都寫在一起了
if (searchText.length == 0 && [[TCRecondBase selectHistroySearchGames] count] > 0) {
self.type = HistroyType;
self.datasArry = [TCRecondBase selectHistroySearchGames];
}else{
self.type = SearchResultType;
}
//檢測輸入的是不是拼音
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"^[A-Za-z]*$"];
NSMutableArray* resultArry = [NSMutableArray array];
//是拼音則匹配以輸入的拼音開頭的且不區分大小寫的游戲名
if ([predicate evaluateWithObject:searchText]) {
NSPredicate *predict = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH[cd] %@",searchText];
NSArray* spallArry = [_allSpalls filteredArrayUsingPredicate:predict];
for (NSString* str in spallArry) {
NSInteger index = [_allSpalls indexOfObject:str];
[resultArry addObject:[_allNames objectAtIndex:index]];
}
//輸入的是數字或者漢字 則匹配名字中包含輸入字符的游戲名
}else{
NSPredicate *predict = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@",searchText];
//或者使用 @"name LIKE[cd] '*%@*'" //*代表通配符
resultArry = [_allNames filteredArrayUsingPredicate:predict].mutableCopy;
}
self.searchResultArry = resultArry;
[self.histroyTableView reloadData];
}
//NSPredicate功能很強大,更多謂詞匹配語法自行百度NSPredicate的使用
屏幕快照 2016-06-30 13.47.56.png
屏幕快照 2016-06-30 13.48.29.png