在点击搜索按钮之前不显示 UISearchController table

Don't display the UISearchController table until the search button is tapped

似乎 UISearchController 的默认行为是在 UISearchBar 中输入字符后立即显示空的 table。我正在执行的搜索不会在输入字符时进行搜索,而是在点击“搜索”按钮时进行搜索。

因此,在实际搜索发生之前,我不想显示空的 table。我该如何做到这一点?

我尝试将 table 设置为隐藏,直到点击搜索按钮,但看起来空的 table 与 UISearchController table,因为在 table.

上调用了 none 个数据源方法

在这种情况下,您可以解决一些问题,例如创建 UIView 并在 tableview 上添加作为子视图以使其隐藏。一旦用户点击搜索按钮删除该视图。

您看到的空 table 视图来自您的搜索结果控制器,它是 "immediately" 由 UISearchController "when the user enters text in the search bar" 显示的。 (source)

隐藏搜索结果控制器中的 table 视图,直到您准备好显示它似乎是最简单的解决方案。但是正如您发现的那样,在显示搜索结果控制器时,UISearchController 将根视图上的 isHidden 属性 的值设置为 false。在我的调试会话中,每次搜索栏开始编辑或搜索文本更改时,UISearchController 都会通过调用名为 _updateVisibilityOfSearchResultsForSearchBar:.

的私有方法来执行此操作

您可以通过在搜索结果控制器中将 table 视图添加为根视图的子视图(然后根据需要隐藏或显示 table 视图)来解决该问题,或者通过调整根视图的 alpha 属性 的值(与 isHidden 不同,可以设置动画)。