我正在使用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: *)
我没有找到好的文档,也没有设法在运行时避免实例选择器错误。