UISearchController:searchResultsController 不显示

UISearchController: searchResultsController not displaying

我是 UISearchController 的新手,如果这是一个愚蠢的问题,请原谅。

我尝试关注 问题,但未能获得我想要的结果。

在我的 MapViewController's viewDidLoad 中,我像这样初始化搜索控制器:

searchController = UISearchController(searchResultsController: customViewController)

其中 customViewController 是 UIViewController 的子类,目前带有一些文本标签(通过界面构建​​器)。 (我这样声明:let customViewController = MyCustomeViewController()

我试图通过在委托方法中使用 searchController.searchResultsController?.view.isHidden = false 隐藏和取消隐藏 searchResultsController 来遵循上述 link,但没有成功。

结果相同:只有视图变暗。

理想情况下,我希望它类似于 Facebook 的应用程序,当您点击搜索栏时,它会显示不同的视图。

我在委托 willPresentSearchController 中打印了 searchResultsController 对象,它确实将其指示为 MyCustomViewController

我是不是遗漏了什么或者这不是正确的方法?

事实证明,要显示的控制器需要是 UITableViewController 或其子类。我尝试了一个里面有 UITableView 的常规 UIViewController,但没有成功。

我发现@Simon 的回答不正确。我可以使用 UIViewController 作为 searchResultsController.

我的问题是 searchController 本身是从内存中释放的,因为我没有保留它,在这种情况下,作为 class 范围的实例。

换句话说,

而不是

let searchController = UISearchController(searchResultsController: MySearchResultsController())
...
self.navigationItem.titleView = self.searchController.searchBar
// And add other delegates and stuff

我制作了一个 class-wide global 并做了

private var searchController : UISearchController!

...

self.searchController = UISearchController(searchResultsController: MySearchResultsController())
...

self.navigationItem.titleView = self.searchController.searchBar
// And add other delegates and stuff