我是objC的新手,我正在尝试UISearchDisplayController。基本上我有一个字符串数组作为我的数据,我使用UISearchBarDisplayController来过滤我的数据。当我将searchText输入搜索栏时,我能够检索到正确的值。但是,当我的searhBar文本为空时,tableView会消失。
是否可以防止tableView隐藏在这种情况下。我想要的是,如果searchBar文本为空,只是在表格中显示我的数组中的所有值。
我检查了表格的隐藏/ alpha / frame属性并尝试解决我的问题,但我认为我在这里错误的路径。我在想是否需要继承UISearchDisplayController并覆盖[setActive:YES animated:YES] ;?任何提示都将不胜感激。
答案 0 :(得分:0)
您应该收到有关搜索参数更改的事件,包括字符串为空时。
如果更改该委托方法的实现以检查字符串是否为空,则可以返回原始数据而不是过滤后的数据。这应该实现您所要求的,而无需子类化。
答案 1 :(得分:0)
我最终使用UISearchBar和UITable。 所以这是我遇到的情景。
我现在没有显示表格的动画,但这对我有用。此外,我在搜索期间允许用户交互并在我的桌面上滚动,因此在这种情况下不需要覆盖。很高兴它现在工作。 :)
我为那些可能需要的人创建了一个示例项目。这是link。为乱码和泄漏问题道歉。刚发布此分享。 :)
答案 2 :(得分:0)
您可以尝试在搜索文本字段中始终保留零空格宽度字符:
static NSString* zsp = @"\u200B";
//In the UISearchBarDelegate
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if(searchBar.text.length == 1 && [text isEqualToString:@""])
{
searchBar.text = zsp;
return NO;
}
return YES;
}