我修改了 Apple 的示例 iOS 项目TableSearch的代码,以便通过解析其内容来使用它来搜索 Web 服务。在使用 SearchDisplayController 的 SearchBar 执行搜索时,除了一个丑陋的细节之外,我实现的所有东西都可以正常工作。我更改了 SearchDisplayController 的行为,使其在点击“搜索”按钮时首先调用我的搜索功能。
问题在于,当搜索迭代(在 NSOperationQueue 的后台执行)完成时,(searchDisplayController 的)“searchResultsTableView”不会自动显示或未分配结果内容。如果您随后更改了 SearchBar 的文本或在您触摸搜索字段时出现的视图中点击“取消”按钮(请参阅 TableSearch),则正确的 TableView 将显示在搜索结果中。我只是想让这个步骤在搜索操作完成后立即执行,所以在你交互之前。在此阶段,当前显示“无结果”标签。方法“filterContentForSearchText”和“shouldReloadTableForSearchString”与原始 TableSearch 项目没有变化。
我查看了 SearchDisplayController 的不同类引用及其属性,但我还没有找到任何最终解决方案。
我在 NSOperation 完成后肯定会迭代的部分中尝试了以下内容,但似乎并没有解决问题。
[self.searchDisplayController.searchResultsTableView removeFromSuperview];
和
self.searchDisplayController.searchResultsTableView.hidden = YES;
这些操作都具有我想要显示的正确视图,但是在您更改状态以使视图再次隐藏之前,滚动被禁用。不过,可以选择 TableView 单元格。我基本上只想启用滚动功能...
提前感谢您的努力!