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()
我尝试通过在委托方法中隐藏和取消隐藏searchResultsController
和searchController.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 中按取消后导航栏被阻止