0

这是我之前做过的事情,效果很好,所以我很困惑为什么它现在不能正常工作。

我想要做的是在我的表格视图的标题中有一个搜索栏,当它变得活跃时它不会移动。我已经使用相同的tableView.tableHeaderView方法在另一个视图中实现了这一点(两者之间的一个区别是工作searchControllerTableViewController嵌入在 a 中NavigationController而不是在带有表的常规ViewController中)。

我会马上进入代码,这里是图片。

不正确的行为:搜索前

在输入搜索条件之前

搜索后

输入搜索条件后

正如你所看到的,在第二张图片中,当它searchController变得活跃时,它会跳到视图的顶部,而不是停留在headerView我认为应该的状态。它还tableView在标题所在的顶部留下了一个非常难看的间隙。大约一年前,我制作了我的应用程序的早期版本,该屏幕上的搜索功能运行良好,并且使用该项目中相同的完全相同的代码仍然会导致这种奇怪的行为,searchControllertableView.

就我的代码而言,我已经使我的类符合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,但我也@IBOutlettableView那里制作了一个并将 附加searchControllertableHeaderView)。可能值得一提的是,顶部的那些单选按钮会触发我tableView显示不同的数组。在我的应用程序的旧版本中,它真的很酷,因为在它们searchController处于活动状态时切换这些单选按钮会自动显示每个数组的搜索结果。

我在这里错过了一些非常明显的东西吗?

4

0 回答 0