UISearchController ResultsController 出现在导航栏上

UISearchController ResultsController appearing over navigation bar

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

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

这曾经有效,但我最近更改了故事板,将 UINavigationController 作为入口点,进入 UITabBarController,然后它有标签式控制器。

UITabBarController 现在具有搜索的所有逻辑,因此它可以通过我实施的协议将对搜索结果采取的操作路由到适当的选项卡。

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

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

我想在顶部有一个持久的搜索栏,所有共享搜索代码都在一个位置 (UITabBarController),而不是在每个选项卡前面放一个 UINavigationController?

如果这可行,是否知道为什么自定义搜索结果控制器现在覆盖整个屏幕,而不是在导航栏下方?

原来问题是我需要打电话给

definesPresentationContext = true

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

当我将搜索代码移动到 UITabBarController 时,我也将其移动了。

我相信你只需要

edgesForExtendedLayout = []

在您的 SearchResultsController 中 ViewDidLoad()

不应该在searchController searchBar下。