UISearchBar + UITableView + UINavigationController问题

时间:2010-08-07 20:10:46

标签: iphone ipad

这是这个问题的后续问题: UINavigationController + UITableView + UISearchBar + UISplitViewController

有没有办法让它如此解决上面的解决方案并不能使结果不成熟?在我的情况下,当您在viewWillDisappear中停用搜索时,您会看到整个列表弹出(在动画期间),如果您在viewDidDisappear中执行此操作,那么它似乎为时已晚,而下一个视图再次位于/ ontop下方酒吧。还有其他解决办法吗?

2 个答案:

答案 0 :(得分:0)

好的,我有你的答案 -

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

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

2)这个可能会有很大差异,具体取决于您的应用程序 - 但此步骤的要点是,如果未加载搜索结果,则需要清除存储的搜索字符串[设置为null]。我在我的UITableViewSource中做到了这一点。我有2个构造函数 - 一个用于完整数据集,另一个用于过滤的[搜索结果]数据集。所以我只是在我的完整数据集构造函数中将其设置为null。是的,你可以毫无疑问地做到这一点,但这就是我做到的。

3)接下来,按原来的“回答”状态进行操作并调用SetActive - [self.searchDisplayController setActive:NO];。他们主张在覆盖ViewDidAppear时这样做。我没有这样做...我在RowSelected覆盖中推送下一个UIViewController之后立即执行了此操作。

4)最后,在附有UISearchDisplayController的UIViewController中检查已保存的搜索字符串,如果存在,则执行以下操作:1)再次调用SetActive但这次使用真参数setActive:YES。 ..然后2)将searchBar文本设置为您保存的搜索字符串值。我在ViewWillAppear覆盖中执行了此操作。

长话短说......这对我有用,它保留了搜索结果。在步骤4中设置searchBar文本是关键......这有效地使过滤器保持不变。

希望这有助于某人

答案 1 :(得分:0)

我最后通过更改搜索栏显示的位置来修复此问题(而不是通过导航栏,它与电子邮件收件箱中的表格相关联)。这解决了问题,使其看起来更像Apple应用程序。