検索バーのあるテーブル ビューがあり、テキストが空のときに検索したい。
検索テキストが空の場合 (ユーザーが検索テキストを入力していない場合)、すべてのデータを表示したい
注 - 検索テキストが入力されている場合、問題は検索テキストが空の場合にのみ発生します。
残念ながら、self.arForSearch
検索テキストが空の場合、配列の内容は使用されません。
テキストを に置き換えてみましたが"p"
、データがロードされていません。
質問 ユーザーが検索文字列を入力していない場合、すべてのデータを表示するにはどうすればよいですか?
コードを以下に貼り付けます。
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
if(searchString.length == 0)
{
searchString = @"p";
NSLog(@"string was empty but was replaced by p");
}
[self filterContentForSearchText:searchString];
// Return YES to cause the search result table view to be reloaded.
return YES;
}
- (void)filterContentForSearchText:(NSString*)str{
// for inCaseSensitive search
str = [str uppercaseString];
NSMutableArray *ar=[NSMutableArray array];
for (NSDictionary *d in self.arForTable) {
NSString *strOriginal = [d valueForKey:@"name"];
// for inCaseSensitive search
strOriginal = [strOriginal uppercaseString];
if([strOriginal hasPrefix:str]) {
[ar addObject:d];
}
}
self.arForSearch=[NSArray arrayWithArray:ar];
NSLog(@"self.arForSearch.count = %i", self.arForSearch.count);
}