这是我之前做过的事情,效果很好,所以我很困惑为什么它现在不能正常工作。
我想要做的是在我的表格视图的标题中有一个搜索栏,当它变得活跃时它不会移动。我已经使用相同的tableView.tableHeaderView
方法在另一个视图中实现了这一点(两者之间的一个区别是工作searchController
是TableViewController
嵌入在 a 中NavigationController
而不是在带有表的常规ViewController
中)。
我会马上进入代码,这里是图片。
不正确的行为:搜索前
搜索后
正如你所看到的,在第二张图片中,当它searchController
变得活跃时,它会跳到视图的顶部,而不是停留在headerView
我认为应该的状态。它还tableView
在标题所在的顶部留下了一个非常难看的间隙。大约一年前,我制作了我的应用程序的早期版本,该屏幕上的搜索功能运行良好,并且使用该项目中相同的完全相同的代码仍然会导致这种奇怪的行为,searchController
即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
(当然,另一个是a tableViewController
,但我也@IBOutlet
为tableView
那里制作了一个并将 附加searchController
到tableHeaderView
)。可能值得一提的是,顶部的那些单选按钮会触发我tableView
显示不同的数组。在我的应用程序的旧版本中,它真的很酷,因为在它们searchController
处于活动状态时切换这些单选按钮会自动显示每个数组的搜索结果。
我在这里错过了一些非常明显的东西吗?