我有一个带有搜索栏的表格 View ,我想在文本为空时进行搜索。
我想在搜索文本为空时(当用户未键入任何搜索文本时)显示所有数据
注意 - 一切正常,当输入搜索文本时,只有当搜索文本为空时才会出现问题
不幸的是,当搜索文本为空时,不使用 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);
}
最佳答案
- (void)filterContentForSearchText:(NSString*)str{
// for inCaseSensitive search
str = [str uppercaseString];
if([str isEqualToString:@""] || str == nil)
{
self.arForSearch=[NSArray arrayWithArray:self.arForTable];
}
else
{
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);
//updated code
[yourTable reloadData];
}
只需检查空字符串并将 self.arForTable 中的所有元素添加到 self.arForSearch 中。
希望这有帮助...
已更新.... 那么您可能需要添加行 [yourTable reloadData];最后会刷新表数据
关于iphone - ios - 当搜索文本为空时,UISearchDisplayDelegate 不进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11663639/