UISearchController ResultsController出现在导航栏上

时间:2017-02-01 06:21:33

标签: ios uiviewcontroller swift3 uistoryboard uisearchcontroller

我有一个UISearchController,它有自己的自定义结果控制器,而不是在即时视图中过滤内容。

UISearchBar正确显示在导航栏中,但当我开始在搜索框中输入字符时,我的自定义控制器出现,并填满整个屏幕,覆盖导航栏和我正在键入的窗口我的查询。

这曾经有用,但我最近改变了我的故事板,让UINavigationController作为切入点,进入UITabBarController,然后有了它的标签控制器。

UITabBarController现在具有搜索的所有逻辑,因此它可以通过我实施的协议将搜索结果上执行的操作路由到相应的选项卡。

下面是我的故事板,请注意,自定义搜索结果控制器是位于UITabBarController下方的项目,右上角的未附加项目是通过库使用并附加到顶部选项卡的控制器内部。

我开始怀疑这个特定的配置是否有效?我可以在UINavigationController前面加UITabBarController吗?

我希望在一个位置(UITabBarController)中有一个持久搜索栏,而不是在每个标签前放置一个UINavigationController?

如果这应该有效,是否有任何想法为什么自定义搜索结果控制器现在覆盖整个屏幕,而不是在导航栏下?

enter image description here

2 个答案:

答案 0 :(得分:3)

原来问题是我需要打电话

definesPresentationContext = true

在已经显示的视图控制器中(选项卡1)

当我将搜索代码移到UITabBarController时,我随之移动了它。

答案 1 :(得分:0)

我相信您只需要拥有

edgesForExtendedLayout = []

在SearchResultsControllers内部ViewDidLoad()

现在应该在searchController searchBar下。