iPad表视图上的UISearchBar消失在导航控制器栏下方

时间:2012-03-21 17:17:36

标签: cocoa-touch uitableview uinavigationcontroller uinavigationbar uisearchbar

我正在使用通用应用程序,使用故事板,我在其中一个表格视图中添加了UISearchBarUISearchDisplayController。我已经把它全部搞定了,并且可以搜索得很好。问题是当我将新的视图控制器推入导航堆栈时。在iPhone上,这很好,但是在iPad上,它会导致推出的视图控制器在导航栏下面偏移(我不得不手动重新出现导航栏,以便你可以回来)。

然后,当您导航回原始表格视图进行搜索时,搜索仍处于活动状态,但UISearchBar现在隐藏在导航栏后面,这意味着无法解除它不删除查询。这也意味着它不再可用,因为你无法重新使用它。

可能最好使用一些截图进行说明。

以下是您首次打开tableview时的外观:

enter image description here

然后进行搜索很好:

Doing the search is fine

点击进入下一个屏幕,我们可以看到问题:

enter image description here

然后返回原始屏幕,仍在进行搜索,但没有搜索框:

Search box half-buried

然后,如果我从搜索框中删除所有内容,并删除叠加层,当我向上滚动表格视图时,我可以看到搜索框,但是无法访问它。虽然我无法获得可靠的屏幕抓取。

我到处寻找解决方案,但未能找到解决方案。我尝试在[self setNeedsDisplay]方法中调用[self setNeedsLayout]viewDidAppear,但这似乎没有效果。如果我改变设备的方向,它似乎会纠正自己,我试图通过调用这些方法来复制它在那种情况下会做什么。

iPad故事板的结构是:SplitViewController - >导航控制器 - > UITabBarController - > UITableViewController(包含UISearchBar等.f) - > UITableViewController

1 个答案:

答案 0 :(得分:1)

我将此问题提交给Apple DTS,他们回复了:

iPad故事板的结构是:SplitViewController - >导航控制器 - > UITabBarController - > UITableViewController(包含UISearchBar等等) - >的UITableViewController

事实上,您的项目架构不符合我们的指导原则: 从适用于iOS的View Controller Catalog的Combined View Controller Interfaces部分: 但是,在组合视图控制器时,包含顺序很重要;只有某些安排有效。从孩子到父母的遏制顺序如下:

内容视图控制器和具有灵活范围的容器视图控制器(例如页面视图控制器) 导航视图控制器 标签栏控制器 拆分视图控制器

基本上,你应该有如下结构: SplitViewController - > UITabBarController - >导航控制器 - > UITableViewController(包含UISearchBar等等) - >的UITableViewController>