我的应用程序是iPad的风景,使用自动布局。UISearchBar消失取消
初始视图的表格视图只占用一半的屏幕(另一半是MapKit视图)。
包含该表格(和地图视图)的该视图控制器是该应用的根控制器的顶部视图控制器。
在视图加载时,我实例化UISearchController
并将其搜索栏添加到表视图的标题视图中,标准过程也是如此。
如果我点击搜索栏并输入一些文字,结果会显示出来。如果我在这里取消搜索,没问题。
如果相反,我选择其中一个结果行,并推入下一个屏幕,并弹出,搜索栏消失。我可以再次调用恢复它:
self.tableView.headerView = self.searchController.searchBar
在viewDidAppear(),但只适用,直到我点击搜索栏中的“取消”按钮(在这一点,它会再次消失 - 右侧范围按钮合拢动画结束)。
我见过很多类似的问题,但没有介绍我确切的症状,并没有任何的解决方案(或其他任何我能想到的):
// In viewDidLoad():
self.definesPresentationContext = true
self.searchController.definesPresentationContext = true
self.extendedLayoutIncludesOpaqueBars = true
self.navigationController?.extendedLayoutIncludesOpaqueBars = true
self.navigationController?.navigationBar.translucent = true
...好像在我的情况下工作。
最奇怪的部分是,我有搜索接口(在模态视图控制器呈现)其它类似的表视图,其中没有差别我能够相对于配置地点,和那些工作好吗...
我知道我必须失去了一些东西......
我不确定,但是在制作自己的控制器时,我看到了类似的东西。尝试玩'presentationContext'。 –
你的意思是'definesPresentationContex'?我试过'true'和'false'。即使在导航到下一个视图控制器(推继续)之后,False也会导致搜索栏保持在屏幕上。 –
是的,你是对的。恰恰是我在我的控制器中看到的这个问题。你可以检查'navigationBar。半透明的价值从儿童控制器返回后?也许子控制器设置一个值'navigationBar.translucent'到'false'? –