这是我之前完成的工作,所以我很困惑为什么它现在无法正常运作。
我想要做的是在我的表格视图的标题中有一个搜索栏,当它变为活动状态时不会移动。我在另一个视图中使用相同的tableView.tableHeaderView
方法实现了这一点(两者之间的一个区别是工作searchController
位于TableViewController
嵌入NavigationController
中而不是带有表格的常规ViewController
。
我偶尔会看到代码,这是照片。
行为不正确:搜索前
搜索后
正如您所看到的,在第二张图片中,当searchController
变为活动状态时,它会跳到视图的顶部,而不是像我认为的那样停留在headerView
。它还会在标题所在的tableView
顶部留下一个非常难看的间隙。我大约一年前制作了我的应用程序的先前版本,此屏幕上的搜索功能完美运行,并且使用该项目中的相同确切代码仍导致searchController
离开{{1}的这种奇怪行为}。
就我的代码而言,我已使我的课程符合tableView
并已实施所需的UISearchResultsUpdating
功能。
我在班上宣布了我的变量:
updateSearchResults(for:)
然后在我的var searchController: UISearchController!
中,我执行以下操作:
viewDidLoad
在我的其他 searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.barTintColor = .white
searchController.searchBar.backgroundImage = UIImage()
searchController.searchBar.tintColor = GlobalPropertyKeys.LovalyticsBlue
searchController.hidesNavigationBarDuringPresentation = false
allListItemsTableView.tableHeaderView = searchController.searchBar
中使用的代码相同(已授予,另一个 是viewController
,但我也创建了tableViewController
对于@IBOutlet
,并将tableView
附加到searchController
。可能值得一提的是,顶部的那些单选按钮会触发我的tableHeaderView
以显示不同的数组。在我的应用程序的旧版本中,它非常酷,因为在tableView
处于活动状态时切换这些单选按钮会自动显示每个阵列的搜索结果。
我错过了一些非常明显的东西吗?