我已经成功地让UISearchController在一个新项目中工作,但当我在自己的项目中尝试做同样的事情时,它的行为会有所不同。
这就是我所做的,让它发挥作用。
情节提要:
这是我的视图控制器代码:
class ViewController: UIViewController, UISearchControllerDelegate, UISearchResultsUpdating, UISearchBarDelegate {
var searchController : UISearchController!
override func viewDidLoad() {
super.viewDidLoad()
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let modalVC = mainStoryboard.instantiateViewController(withIdentifier: "SearchTableViewController_SBID")
self.searchController = UISearchController(searchResultsController: modalVC)
self.searchController.searchResultsUpdater = self
self.searchController.delegate = self
self.searchController.searchBar.delegate = self
self.searchController.hidesNavigationBarDuringPresentation = false
self.searchController.dimsBackgroundDuringPresentation = true
self.navigationItem.titleView = searchController.searchBar
self.definesPresentationContext = true
}
func updateSearchResults(for searchController: UISearchController) {
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我得到的结果是,当我单击搜索栏时,背景将变暗,当我开始键入时,tableview控制器将可见,搜索栏是否仍在tableview控制器的导航栏中可见。
然而,当我尝试在项目中实现相同的内容时,当我开始在搜索栏上键入时,表视图控制器将填满整个屏幕,导航栏不可见。
这是我的项目的情节提要:
请注意,这两个项目都是相似的,只是其中一个是
Navigation Controller -> Tab Bar View Controller
,当我在搜索栏上键入时,它不会显示导航栏。
如何在项目中显示导航栏
导航控制器->选项卡栏视图控制器
?
这是两个项目的情况: