iphone - 在搜索方法迭代完成后重新加载/显示 UISearchDisplayController 的 searchResultsTableView

标签 iphone objective-c cocoa-touch uisearchdisplaycontroller

我已经修改了Apple 示例iOS 项目的代码TableSearch为了通过解析其内容来使用它来搜索网络服务。在使用 SearchDisplayController 的 SearchBar 执行搜索时,除了一个丑陋的细节外,我实现的所有内容都运行良好。我更改了 SearchDisplayController 的行为,使其在点击“搜索”按钮时首先调用我的搜索函数。

问题在于,当搜索迭代(在 NSOperationQueue 的后台执行)完成时,“searchResultsTableView”(searchDisplayController 的)不会自动显示或不会分配结果内容。如果您随后更改 SearchBar 的文本或点击触摸搜索字段时出现的 View 中的“取消”按钮(请参阅 TableSearch),正确的 TableView 将与搜索结果一起出现。我只是想让这一步在搜索操作完成后立即执行,所以在您进行交互之前。在此阶段,当前显示“无结果”标签。 “filterContentForSearchText”和“shouldReloadTableForSearchString”方法与原始 TableSearch 项目没有变化。

我查看了 SearchDisplayController 及其属性的不同类引用,但我还找不到任何最终解决方案。

我已经在NSOperation结束后肯定会迭代的部分尝试了以下但它似乎并没有解决问题。

[self.searchDisplayController.searchResultsTableView removeFromSuperview];

self.searchDisplayController.searchResultsTableView.hidden = YES;

这些操作都具有我想要显示的正确 View ,但滚动被禁用,直到您更改状态以便再次隐藏 View 。不过,可以选择 TableView 单元格。我基本上只想启用滚动...

预先感谢您的努力!

最佳答案

我有同样的问题,我刚刚解决了。我有完全相同的问题,我想禁用即时搜索,当我点击搜索按钮时,表格没有加载,但当我点击取消时,它加载了。如果我在搜索后未加载正确结果的 TableView 上滚动,它会因索引超出范围而崩溃。

您需要做的是重新加载 searchResultTableView 而不是当前的 tableview。按搜索词筛选数据后,将

[self.searchDisplayController.searchResultsTableView reloadData]

重新加载您的搜索结果,它会在您点击搜索按钮后显示。 希望这有帮助

关于iphone - 在搜索方法迭代完成后重新加载/显示 UISearchDisplayController 的 searchResultsTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702945/

相关文章:

ios - Nodejs Socket.io 适用于桌面 safari 和 chrome,但不适用于 iPhone

ios - 错误 "No known class method for selector ' 可以发送推文'

ios - 三 View 之间使用UIScrollView到 "rotate"

iphone - Core Graphics 画线带轮廓

ios - 以编程方式同时关闭 UINavigation View 和模态视图

ios - iphone 键盘 unicode 映射

iphone - 用于 ios 开发的 Windows 上的 Xcode

iphone - 在 iPhone 5 的横向模式下启动启动画面

ios - Xcode Segue 推送到标签

ios - 在 iOS 7 上使用 A Person ViewController 重新加载/更改显示的人