0

我有一个烦人的问题。我的 UISplitViewController 的主(左)窗格中有一个带有 UITableView 的 UINavigationController。当我进行正常操作时,事情会顺利推进到导航控制器。

替代文字 http://files.droplr.com/files/8851942/WDO5y.working.jpg

但是,当我进行搜索并推送内容时,就好像它没有考虑导航栏所需的空间。它将新控制器推到最顶部,然后打开导航栏,重叠内容!

替代文字 http://files.droplr.com/files/8851942/WDRem.search.jpg

我应该在纵向(在弹出菜单中)和 iphone 上添加它时效果很好。这是一个 UISplitViewController 错误吗?

4

2 回答 2

1

我看到你在一个多月前问过这个问题,不知道你是否找到了解决方案,但我遇到了同样的问题,搜索谷歌一直把我带到这个线程。我还没有测试它是否在设备上发生这种情况,因为我仍在等待我的发货,但它确实在模拟器中发生了这种情况。我有一个根视图,它是一个带有搜索栏的 UITableViewController 子类,将任何内容推送到导航堆栈上都会导致视图位于导航栏的顶部或后面,或者以某种方式正确的位置,但导航栏不可触摸。

[self.searchDisplayController setActive:NO];当视图通过覆盖 viewDidDisappear 或 viewWillDisappear 消失时,我终于意识到将搜索显示控制器设置为不活动。现在一切似乎都得到了正确的框架/边界,但是当你弹回来时你会失去搜索显示。如果你愿意,我猜你可以在离开时保存搜索显示的状态,然后在回来时返回它。如果您找到了另一个解决方案,请告诉我。

于 2010-06-20T21:53:11.760 回答
1

好的,我得到了你的答案-[我也将这个答案发布到了链接的问题]-

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

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 文本是关键……这有效地使过滤器保持不变。

希望这可以帮助某人

于 2010-09-15T19:27:27.660 回答