好的,我得到了你的答案-[我也将这个答案发布到了链接的问题]-
以下是对我有用的步骤[包含一些伪代码]:
1)由于您正在搜索,您肯定已经覆盖了ShouldReloadForSearch
- 所以只需添加一段代码来保存/存储forSeachString
.
2) 这可能会因您的应用程序而有很大差异 - 但此步骤的要点是,如果未加载搜索结果,您需要清除存储的搜索字符串 [设置为 null]。我在我的 UITableViewSource 中做到了这一点。我有 2 个构造函数——一个用于完整数据集,另一个用于过滤后的 [搜索结果] 数据集。所以我只是在我的完整数据集构造函数中将它设置为 null 。是的,毫无疑问,你可以做不同的事情,但我就是这样做的。
3)接下来,按照原来的“答案”状态并调用 SetActive - [self.searchDisplayController setActive:NO];
。他们主张在覆盖 ViewDidAppear 的情况下这样做。我没有这样做......我在我的RowSelected
覆盖中推送了下一个 UIViewController 后立即这样做了。
4)最后,在连接了 UISearchDisplayController 的 UIViewController 中 - 检查保存的搜索字符串,如果存在,请执行以下操作:1)再次调用 SetActive 但这次使用 true 参数,即setActive:YES
......然后 2)设置 searchBar文本到您保存的搜索字符串值。我在ViewWillAppear
覆盖中做到了这一点。
长话短说……这对我有用,并且可以维护搜索结果。在步骤 4 中设置 searchBar 文本是关键……这有效地使过滤器保持不变。
希望这可以帮助某人