我修改了Apple的示例iOS项目的代码表格搜索 http://developer.apple.com/library/ios/samplecode/TableSearch/Introduction/Intro.html以便通过解析 Web 服务的内容来使用它来搜索 Web 服务。我所实现的一切都工作正常,除了使用 SearchDisplayController 的 SearchBar 执行搜索时的一个丑陋的细节。我更改了 SearchDisplayController 的行为,使其在点击“搜索”按钮时首先调用我的搜索函数。
问题是,当搜索迭代(在 NSOperationQueue 的后台执行)完成时,“searchResultsTableView”(searchDisplayController 的)不会自动显示或不会分配结果内容。如果您随后更改搜索栏的文本或在触摸搜索字段时出现的视图中点击“取消”按钮(请参阅 TableSearch),则正确的 TableView 将与搜索结果一起出现。我只是想在搜索操作完成后立即执行此步骤,以便在交互之前执行。在此阶段,当前显示“无结果”标签。方法“filterContentForSearchText”和“shouldReloadTableForSearchString”与原始 TableSearch 项目相比没有变化。
我已经查看了 SearchDisplayController 的不同类引用及其属性,但我还找不到任何最终的解决方案。
我在 NSOperation 完成后肯定会迭代的部分中尝试了以下内容,但它似乎没有解决问题。
[self.searchDisplayController.searchResultsTableView removeFromSuperview];
and
self.searchDisplayController.searchResultsTableView.hidden = YES;
这些操作都有我想要显示的正确视图,但滚动被禁用,直到您更改状态以便再次隐藏视图。不过,可以选择 TableView 单元格。我基本上只想启用滚动功能......
预先感谢您的努力!
我有同样的问题,我刚刚解决了。我遇到了完全相同的问题,我想禁用即时搜索,当我点击搜索按钮时,表格未加载,但当我单击取消时,它会加载。如果我在搜索后未加载正确结果的表视图上滚动,则会因索引超出范围而崩溃。
您需要做的是重新加载 searchResultTableView 而不是当前的 tableview。按搜索词过滤数据后,输入
[self.searchDisplayController.searchResultsTableView reloadData]
重新加载您的搜索结果,它会在您点击搜索按钮后显示。
希望这有帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)