如何在现有的UINavigationController中嵌入UISearchResultsController视图

时间:2016-04-14 22:26:40

标签: ios swift search

我正在使用Swift和Xcode 7.3创建iOS 9.3应用程序。

显示食物类别列表(表格视图)。每个类别都包含食品(集合视图)。每个项目都有一个简单的详细页面。此视图层次结构由一个导航控制器管理。

我使用UISearchController实现了一个全局(类别不可知)食品项搜索栏。搜索栏在类别视图中可见,但是,使用我的食物项目视图来显示结果。 (结果是项目,而不是类别)。

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let ficId = "FoodItemsCollectionControllerId"
let fic = storyboard.instantiateViewControllerWithIdentifier(ficId)
    as! FoodItemsCollectionController

searchController = UISearchController(searchResultsController: dic)
fic.searchController = searchController
searchController.searchResultsUpdater = fic
searchController.dimsBackgroundDuringPresentation = false

definesPresentationContext = true
searchController.searchBar.sizeToFit()
navigationItem.titleView = searchController.searchBar
searchController.hidesNavigationBarDuringPresentation = false

问题:每当我搜索某个项目并单击它时,由于项目视图未嵌入到我的导航控制器中,因此无法按下食品详细信息视图segue。我可以以模态方式呈现视图,没有导航栏(也无法返回)。我可以手动实现后退按钮,但我想要一个优雅的导航控制器解决方案。

尝试:手动将项目视图控制器推送,添加和设置到导航控制器上。但是,每当我在构造UISearchController时将searchResultsController设置为它时,似乎都会被忽略。

navigationController?.addChildViewController(fic)
navigationController?.pushViewController(fic, animated: true)
navigationController?.viewControllers = [fic, self]

想法:使用

searchController.presentationControllerForPresentedViewController(*, presentingViewController: *, sourceViewController: *)

我没有找到好的文档,也没有设法在运行时避免实例选择器错误。

0 个答案:

没有答案