UISearchViewController 在演示期间隐藏标签栏

UISearchViewController hides tabbar during presentation

我使用 UISearchViewController 来控制我的应用程序的搜索内容。我看到有一个名为 hidesNavigationBarDuringPresentation 的 属性 用于处理导航栏的可见性,但我想做的是在演示期间隐藏标签栏,我找不到任何属性来执行此操作。

有什么变通方法吗?

你是对的,没有 属性 用于显式显示和隐藏标签栏,但是你自己实现很容易:

  1. 使您的视图控制器(不是 UISearchController)实现 UISearchControllerDelegate
  2. 将您的视图控制器分配给搜索控制器的 delegate 属性。
  3. 实施 willPresentSearchController()(或 didPresentSearchController())和 presentSearchController() 以隐藏您的标签栏。 (前者在自动显示搜索栏时调用;后者在手动显示时调用。)
  4. 执行willDismissSearchController()(或didDismissSearchController)再次显示。

请注意,如果您的实现只是简单地切换搜索栏的 hidden 属性,则搜索栏不会以动画方式进出;你必须自己制作动画。

您的实施检查 hidesNavigationBarDuringPresentation 的值可能是个好主意,这样您的选项卡栏仅在导航栏打开时显示和隐藏。