TableViewController中的SearchBar

时间:2015-11-10 11:25:11

标签: ios swift uitableview swift2

在我的应用中,我有一个UITableViewController,我想在其中添加一个搜索栏。 tableview有3个部分,当点击其中一个时会扩展。我将此代码添加到viewDidLoad

searchBar.showsScopeBar = true
searchBar.delegate = self
searchBar.frame = CGRectMake(0, 0, tableView.frame.size.width, 100)

self.view.addSubview(searchBar)

问题是:当您打开它时,搜索栏会出现在第一部分中,它应该显示在整个tableview上方,是否有任何建议? 任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

您可以将searchBar添加为tableHeaderView TableView的{​​{1}}。

答案 1 :(得分:1)

你可以在Matt Neuburg的iOS 9编程中找到非常有用的例子,在第二章:表视图和控制器视图中。

let src = SearchResultsController(data: self.sectionData)
let searcher = UISearchController(searchResultsController: src)
self.searcher = searcher
searcher.searchResultsUpdater = src
let b = searcher.searchBar
b.sizeToFit() // crucial, trust me on this one
b.autocapitalizationType = .None
self.tableView.tableHeaderView = b
self.tableView.reloadData()
self.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition:.Top, animated:false)

他还警告说,添加搜索栏作为表格视图的标题视图可能会产生奇怪的效果:它会导致表格视图的背景颜色被灰色覆盖,在搜索上方可见用户向下滚动时的栏。官方解决方法是为表视图分配一个具有所需颜色的backgroundView。