通常,当激活UISearchDisplayController时,会使tableView变暗并聚焦搜索栏.在搜索栏中输入文本后,它会创建一个searchResultsTableView,显示在搜索栏和键盘之间.当加载/显示/隐藏/卸载第二个UITableView时,将调用searchDisplayController的委托.通常它会在打字时显示实时搜索结果或自动完成条目.

在我的应用程序中,我想搜索一个Web服务,但我不想为用户输入的每个字母调用Web服务.因此,我想完全禁用searchResultsTableView,并在他输入文本时保留暗显的黑色覆盖.然后,我会用一个触发器点击屏幕上的"搜索"按钮.

只为searchResultsTableView返回零行看起来不太好,因为它会显示一个空的searchResultsTableView,并显示一条"no results"消息.我试图在表格出现(searchDisplayController:didLoadSearchResultsTableView:)时隐藏它,这是可行的,但是黑色的覆盖层也被隐藏,这样基础的表格视图就可以再次完全可见.

除了从头开始重新创建UISearchDisplayController功能,还有什么 idea 吗?

推荐答案

这是我刚刚想出的一个小把戏

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    savedSearchTerm = searchString;

    [controller.searchResultsTableView setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.8]];
    [controller.searchResultsTableView setRowHeight:800];
    [controller.searchResultsTableView setScrollEnabled:NO];
    return NO;
}

- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView
{
    // undo the changes above to prevent artefacts reported below by mclin
}

我想你会知道下一步该怎么做的

Objective-c相关问答推荐

NSString "nil or empty" 判断 - 这完成了吗?

uipageviewcontroller 类在设置多个视图控制器时崩溃

NSBundle pathForResource 为 NULL

iphone 的 UIPopoverController 不工作?

在 Objective-C 中定义协议的类别?

如何处理 Xcode 警告没有以前的函数原型......?

右对齐的 UITextField 空格键在 iOS 7 中不前进光标

如何判断字符串是否仅包含目标C中的字母数字字符?

如何从 AVPlayer(不是 AVAudioPlayer)获取持续时间?

判断 NSString 是否只是由空格组成

了解按位与运算符

如何删除手势识别器

Select 时 UITableViewCell 复选标记更改

在 UITextField 文本上投影

Highlighted 和 Selected UIButton 的 State 有什么区别?

笔尖中的原型单元而不是故事板

使 UILabel 的文本加粗

将数据传回前一个视图控制器

如何阻止 NSNotification 中的观察者调用两次?

Objective-C:如何向 NSURL 添加查询参数?