【发布时间】:2012-03-21 17:17:36
【问题描述】:
我正在开发一个通用应用程序,使用情节提要,我已将UISearchBar 和UISearchDisplayController 添加到我的一个表视图中。我已经把它全部连接起来了,并且可以很好地搜索。问题是当我将一个新的视图控制器推送到导航堆栈上时。在 iPhone 上,这很好,但在 iPad 上,它会导致推送的视图控制器在导航栏下方偏移(我必须手动使导航栏重新出现,以便您可以返回)。
然后,当您导航回进行搜索的原始表格视图时,搜索仍处于活动状态,但 UISearchBar 现在隐藏在导航栏后面,这意味着如果不删除就无法关闭它查询。这也意味着它不再可用,因为您无法重新使用它。
最好使用一些屏幕截图来说明。
这是您第一次打开 tableview 时的样子:
然后搜索就好了:
点击进入下一个屏幕,我们可以看到问题:
然后回到原来的屏幕,仍在搜索但没有搜索框:
然后,如果我从搜索框中删除所有内容,并摆脱覆盖,当我向上滚动表格视图时,我可以看到搜索框,但永远无法到达它。不过,我无法获得可靠的屏幕抓取。
我到处寻找解决方案,但一直没有找到。我试过在viewDidAppear 方法中调用[self setNeedsDisplay] 和[self setNeedsLayout],但这似乎没有效果。如果我改变设备的方向,它似乎会自行纠正,并且我试图通过调用这些方法来复制它在这种情况下会做的事情。
iPad故事板的结构是:SplitViewController -> Navigation Controller -> UITabBarController -> UITableViewController(包含UISearchBar etc.f) -> UITableViewController
【问题讨论】:
标签: cocoa-touch uitableview uinavigationcontroller uinavigationbar uisearchbar