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

Posted

技术标签:

【中文标题】iPad表格视图上的UISearchBar消失在导航控制器栏下方【英文标题】:UISearchBar on iPad table view disappearing below navigation controller bar 【发布时间】:2012-03-21 17:17:36 【问题描述】:

我正在开发一个通用应用程序,使用情节提要,我已将UISearchBarUISearchDisplayController 添加到我的一个表视图中。我已经把它全部连接起来了,并且可以很好地搜索。问题是当我将一个新的视图控制器推送到导航堆栈上时。在 iPhone 上,这很好,但在 iPad 上,它会导致推送的视图控制器在导航栏下方偏移(我必须手动使导航栏重新出现,以便您可以返回)。

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

最好使用一些屏幕截图来说明。

这是您第一次打开 tableview 时的样子:

然后搜索就好了:

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

然后回到原来的屏幕,仍在搜索但没有搜索框:

然后,如果我从搜索框中删除所有内容,并摆脱覆盖,当我向上滚动表格视图时,我可以看到搜索框,但永远无法到达它。不过,我无法获得可靠的屏幕抓取。

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

iPad故事板的结构是:SplitViewController -> Navigation Controller -> UITabBarController -> UITableViewController(包含UISearchBar etc.f) -> UITableViewController

【问题讨论】:

【参考方案1】:

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

iPad storyboard的结构是:SplitViewController -> Navigation Controller -> UITabBarController -> UITableViewController (包含UISearchBar etc.f) -> UITableViewController

事实上,您的项目架构没有遵循我们的指导方针,这些指导方针是: 从 ios 视图控制器目录的组合视图控制器接口部分: 然而,当组合视图控制器时,包含的顺序很重要。只有某些安排是有效的。从子到父的收容顺序如下:

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

基本上,您应该具有如下结构: SplitViewController -> UITabBarController -> 导航控制器-> UITableViewController (包含 UISearchBar etc.f) -> UITableViewController>

【讨论】:

我遇到了类似的问题,通过将导航栏从半透明更改为不透明来解决,它突然开始工作——这可能是 ios 7 的问题。 嗨,罗伯。我有同样的问题,但不明白你在这里说什么。我该如何解决这个问题?

以上是关于iPad表格视图上的UISearchBar消失在导航控制器栏下方的主要内容,如果未能解决你的问题,请参考以下文章

UISearchController 中的 UISearchBar 不会消失

iPad:在屏幕上保留选定的表格视图单元格

使用 UISegmentControl 切换视图时 UISearchBar 消失

iPad 上的表格视图组

UISearchBar 在横向没有响应,但在 iPad 上的纵向正常

显示键盘时在 iPad 上的表单中调整表格视图的大小