Ios 如何将UISearchBar移动到其他视图?
我想做以下工作: 我在UIView(屏幕a)中显示一个包含标题、副标题和搜索栏的屏幕。当人们开始搜索时,我想将搜索栏移动到用于显示搜索结果的tableview的标题处。当人们停止搜索并单击“取消”时,我想删除该tableview并显示原始屏幕A 以下是我正在做的: 我在viewDidLoad中调用了以下代码:Ios 如何将UISearchBar移动到其他视图?,ios,swift,Ios,Swift,我想做以下工作: 我在UIView(屏幕a)中显示一个包含标题、副标题和搜索栏的屏幕。当人们开始搜索时,我想将搜索栏移动到用于显示搜索结果的tableview的标题处。当人们停止搜索并单击“取消”时,我想删除该tableview并显示原始屏幕A 以下是我正在做的: 我在viewDidLoad中调用了以下代码: searchBarView = UIView(frame: CGRect(x: CGFloat(0), y: line.frame.origin.y + line.frame.he
searchBarView = UIView(frame: CGRect(x: CGFloat(0), y: line.frame.origin.y + line.frame.height + 30, width: self.view.bounds.size.width, height: CGFloat(44)))
let searchBar = searchController.searchBar
searchBar.backgroundColor = UIColor.white
searchBar.frame = CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: 44)
searchBar.placeholder = " Search book title, author..."
searchBar.sizeToFit()
searchBarView.addSubview(searchBar)
innerView.addSubview(searchBarView)
tableViewBooks.frame = CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.innerView.frame.height);
当人们开始搜索时,我将搜索栏移动到表视图的头部:
func filterContentForSearchText(_ searchText: String, scope: String = "All") {
if (!searchBarIsEmpty()) {
if !inSearchMode {
self.tableViewBooks.tableHeaderView = searchController.searchBar
innerView.addSubview(tableViewBooks)
inSearchMode = true
}
当人们停止搜索时,我会将搜索栏移回屏幕A中的原始视图
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
if (inSearchMode) {
tableViewBooks.removeFromSuperview()
searchController.searchBar.removeFromSuperview()
searchBarView.addSubview(searchController.searchBar)
inSearchMode = false
}
}
不幸的是,这是行不通的。当人们开始搜索时,搜索栏会移动到表视图的顶部。但当人们停止搜索时,搜索栏就会从屏幕A中消失
总结如下: