UISearchController:searchResultsController 不显示

Posted

技术标签:

【中文标题】UISearchController:searchResultsController 不显示【英文标题】:UISearchController: searchResultsController not displaying 【发布时间】:2017-05-29 20:46:59 【问题描述】:

我对 UISearchController 很陌生,如果这是一个愚蠢的问题,请原谅。

我尝试关注this 问题,但无法获得我想要的结果。

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

searchController = UISearchController(searchResultsController: customViewController)

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

我尝试通过在委托方法中隐藏和取消隐藏searchResultsControllersearchController.searchResultsController?.view.isHidden = false 来跟踪上述链接,但没有成功。

结果是一样的:只有视图变暗了。

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

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

我在这里遗漏了什么还是这不是正确的方法?

【问题讨论】:

【参考方案1】:

事实证明,要显示的控制器需要是 UITableViewController 或其中的子类。我尝试了一个普通的UIViewController,里面有一个UITableView,但没有运气。

【讨论】:

【参考方案2】:

我发现@Simon 的回答不正确。我可以将UIViewController 用于searchResultsController

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

换句话说,

代替

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

我做了一个全班的全局并做到了

private var searchController : UISearchController!

...

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

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

【讨论】:

以上是关于UISearchController:searchResultsController 不显示的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableView Objective-C 中实现 UISearchController

在 UISearchController 中按取消后导航栏被阻止

iOS UISearchController:等到 UISearchController 在取消搜索后被解除

UISearchController

UISearchController 与单元格布局混淆

UISearchController 未显示