阻止UISearchDisplayController隐藏UiTable

时间:2012-06-14 04:35:03

标签: objective-c uisearchdisplaycontroller

我是objC的新手,我正在尝试UISearchDisplayController。基本上我有一个字符串数组作为我的数据,我使用UISearchBarDisplayController来过滤我的数据。当我将searchText输入搜索栏时,我能够检索到正确的值。但是,当我的searhBar文本为空时,tableView会消失。

是否可以防止tableView隐藏在这种情况下。我想要的是,如果searchBar文本为空,只是在表格中显示我的数组中的所有值。

我检查了表格的隐藏/ alpha / frame属性并尝试解决我的问题,但我认为我在这里错误的路径。我在想是否需要继承UISearchDisplayController并覆盖[setActive:YES animated:YES] ;?任何提示都将不胜感激。

3 个答案:

答案 0 :(得分:0)

您应该收到有关搜索参数更改的事件,包括字符串为空时。

如果更改该委托方法的实现以检查字符串是否为空,则可以返回原始数据而不是过滤后的数据。这应该实现您所要求的,而无需子类化。

答案 1 :(得分:0)

我最终使用UISearchBar和UITable。 所以这是我遇到的情景。

  1. 单击searchBar时显示UITable。
  2. 当searchText为空时,UITable显示我的plist中的所有数据。
  3. UITable显示我的plist与searchText匹配的过滤结果。
  4. 按下搜索按钮时关闭键盘,但不要禁用搜索栏上的取消按钮。
  5. 按下取消按钮时删除UITable。
  6. 我现在没有显示表格的动画,但这对我有用。此外,我在搜索期间允许用户交互并在我的桌面上滚动,因此在这种情况下不需要覆盖。很高兴它现在工作。 :)

    我为那些可能需要的人创建了一个示例项目。这是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;
}