iphone - ios - 当搜索文本为空时,UISearchDisplayDelegate 不进行搜索

标签 iphone ios uisearchbar uisearchdisplaycontroller uisearchbardelegate

我有一个带有搜索栏的表格 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/

相关文章:

ios - 在 UIWebView 中加载受密码保护的 PDF

ios - UISearchBar 中未显示取消按钮

iphone - cocoa 的选择性采伐

iphone - 如何在 iOS 中打开关联未知的文件?

iphone - 如何成为从一个 UITextView 到另一个 UITextView 的响应者?

swift - 为什么我不能使用 searchBar 搜索名字和姓氏?

uinavigationbar - 如何去除 UINavigationBar 和 UISearchBar 细线

iphone - 为什么在使用全局调度队列时不调用 NSURLConnection 委托(delegate)方法?

ios - 从 UICollectionView 完整内容创建 Pdf?

iphone - 我如何通过iphone开发存储来自SQLite数据库的数据