Iphone UISearchBar+UITableView+UINavigationController问题

Iphone UISearchBar+UITableView+UINavigationController问题,iphone,ipad,Iphone,Ipad,以下是这个问题的后续内容: 有没有办法使上面的解决方案不影响结果的过滤?在我的例子中,当您在ViewWillEnglish中禁用搜索时,您会看到整个列表在动画期间弹出,如果您在ViewDidEnglish中执行此操作,则似乎为时已晚,下一个视图再次位于条的/ontop下方。还有别的解决办法吗?好的,我已经得到你的答案了- 以下是对我有效的步骤[包含一些伪代码]: 1由于您正在搜索,您肯定已经覆盖了ShouldReloadForSearch-所以只需添加一段代码来保存/存储forSeachStr

以下是这个问题的后续内容:


有没有办法使上面的解决方案不影响结果的过滤?在我的例子中,当您在ViewWillEnglish中禁用搜索时,您会看到整个列表在动画期间弹出,如果您在ViewDidEnglish中执行此操作,则似乎为时已晚,下一个视图再次位于条的/ontop下方。还有别的解决办法吗?

好的,我已经得到你的答案了-

以下是对我有效的步骤[包含一些伪代码]:

1由于您正在搜索,您肯定已经覆盖了ShouldReloadForSearch-所以只需添加一段代码来保存/存储forSeachString

2根据你的应用程序,这一步可能会有很大的不同,但这一步的要点是,如果没有加载搜索结果,你需要清除存储的搜索字符串[设置为null]。我在我的UITableViewSource中这样做了。我有两个构造函数-一个用于完整数据集,另一个用于过滤的[search results]数据集。所以我只是在我的完整数据集构造函数中将它设置为null。是的,毫无疑问你可以做得不同,但我就是这样做的

3接下来,按照原始应答状态进行操作,并调用SetActive-[self.searchDisplayController SetActive:NO];。他们主张这样做是为了取代视图。我没有那么做。。。在按下行中的下一个UIViewController后,我立即执行了此操作

4最后,在连接了UISearchDisplayController的UIViewController中-检查保存的搜索字符串,如果存在,则执行以下操作:1再次调用SetActive,但这次使用真实参数ie SetActive:YES。。。然后2将搜索栏文本设置为保存的搜索字符串值。我在ViewWillooke中这样做了

长话短说。。。这对我来说很有效,它维护了搜索结果。在步骤4中设置搜索栏文本是关键。。。这将有效地使过滤器持久化


希望这对某人有所帮助

我最终解决了这个问题,改变了搜索栏的显示位置,而不是浏览导航栏,导航栏与电子邮件收件箱中的表格类似。这解决了这个问题,使它看起来更像苹果的应用程序。

这里有很多因素。你如何组织你的搜索?你是如何处理搜索结果的?您对didSelectRowAtIndexPath:method做了什么特别的操作吗?请在上一个帮助中的屏幕截图中发布一些代码,但不要提供足够的信息。