如何以编程方式将搜索栏添加到 UITableView header?

How to programmatically add a search bar to a UITableView header?

我该如何以编程方式将搜索栏添加到 uitable 视图 header 中?具体来说,我有一个栏按钮项目,当它被按下时,我想在搜索栏中设置动画到 table 视图 header 并且当取消按钮被按下时,它将动画退出视图和header 恢复正常。这可能吗?谢谢

它基于 Swift 2 但与 swift 3

差别不大

将搜索委托添加到视图控制器:

UISearchResultsUpdating

进行搜索:

let searchController = UISearchController(searchResultsController: nil)

为 searchController 设置默认值:

searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
definesPresentationContext = true

将搜索添加到 table:

table.tableHeaderView = searchController.searchBar

这位代表让你知道开始搜索:

func updateSearchResultsForSearchController(searchController: UISearchController) {
    filterContentForSearchText(searchController.searchBar.text!)
}

实现您的搜索功能:

func filterContentForSearchText(searchText: String, scope: String = "All") {
    // do some stuff
}

以编程方式设置搜索栏

首先将 UISearchBarDelegate 添加到您的 class

let searchBar = UISearchBar()
searchBar.frame = CGRect(x: 0, y: 0, width: 200, height: 70)
searchBar.delegate = self
searchBar.showsCancelButton = true
searchBar.searchBarStyle = UISearchBarStyle.default
searchBar.placeholder = " Search Here....."
searchBar.sizeToFit()

并将搜索栏添加到 UITableView header

tableView.tableHeaderView = searchBar