即使将样式更改为 UITableViewStyleGrouped 后,Tableview header 仍不可滚动

Tableview header is not scrollable even after changing the style to UITableViewStyleGrouped

我正在向我的 UITableView 的 header 添加一个搜索栏,并希望能够在用户滚动单元格时使用它。

我已经尝试了所有方法,例如将样式设置为 UITableViewStyleGrouped,但它并没有解决我的问题。

这是代码

var searchController: UISearchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
definesPresentationContext = true
tableView.tableHeaderView = searchController.searchBar

为什么 header 停留在停靠点?

我不确定您是否只是在寻找程序化解决方案,但是通过 Interface Builder,您可以在 UITableView 上方放置一个搜索栏。

如果您使用的是 iOS 11,那么您可以使用以下代码将 UISearchBar 放入 UINavigationBar。即使您滚动 UITableView,UISearchBar 也将始终可见。

class DishesTableViewController : UITableViewController, UISearchResultsUpdating {

    func updateSearchResults(for searchController: UISearchController) {

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let searchController = UISearchController(searchResultsController: self)
        searchController.searchResultsUpdater = self

        self.navigationItem.searchController = searchController
        self.navigationItem.hidesSearchBarWhenScrolling = false 
    }