在我的应用中,我有一个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上方,是否有任何建议? 任何帮助表示赞赏!
答案 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。